2017-10-12 71 views
1

行動鏈接:帳戶與我面臨的有關帳戶上谷歌在操作連接的問題對谷歌

我能夠對用戶進行認證,並然而在此之後訪問他的電子郵件地址和用戶名,我怎樣才能將用戶重定向回到谷歌助手,並關閉他的身份驗證瀏覽器?

任何幫助將不勝感激!

更新:嘿囚犯非常感謝。 我做了你所說的,現在它確實重定向到google.com,但沒有result_code = SUCCESS,當我在模擬器中測試它時。

的鏈接是:

https://www.google.co.in/?gws_rd=cr&dcr=0&ei=z77fWbjQGIXxvATs_oqwBA 

現在,如果我輸入再跟......它讓我看到您需要將您的帳戶關聯的消息!

在設備中瀏覽器自動關閉,但它顯示SIGNING_IN,但是當我鍵入意圖時,它不被識別。

如果你能指引我正確的方向,那將是很棒的! (我不確定,但我可能會在您提到的令牌交換階段,但我不知道如何繼續!)

更新2:根據要求,我要求的整個流程如下: This是,我從debuginfo軟收到的網址:我送回

ImmutableMultiDict([ 
    ('response_type', 'code'), 
    ('client_id', ****.apps.googleusercontent.com'), 
    ('redirect_uri', 'https://oauth-redirect.googleusercontent.com/r/****'), 
    ('scope', 'email'), 
    ('state', ' CtcCQUxWM2ROU3hNMjl4LUItVXhQSGd4THRMLU4yNExnb3lYbGRKQnQwa3NwTVFva19NUWpYNE5jNGJURzIyZFN3RDBXd2d4enFGVWJGb0Q0ZW1vaS1OaFdkaHdhb05HZ2xlWTR6SllKVlRWYktwd09faklyUTVheFhQbGw2dmVKYzVFTk05N3B1QkxaZG41RVdHN0wyTktvRFdCYzFPVFBzM1dQUlFtN2RmM1VtRU4****(state)') 
]) 

響應(REDIRECT_URL):

https://assistant.google.com/services/auth/handoffs/auth/start?account_name=cha***@gmail.com&provider=***_dev&scopes=email&return_url=https://www.google.com/ 

當我粘貼在瀏覽器中,我收到的授權端點的請求:

https://accounts.google.com/o/oauth2/v2/auth?scope=email&response_type=code&redirect_uri=https%3A%2F%2F******.herokuapp.com%2Fcallback%2Fgoogle&client_id=****.apps.googleusercontent.com 

當它到達我的終點再次請求參數是:

ImmutableMultiDict([ 
    ('code', '4/***********') 
]) 

現在我能夠訪問電子郵件地址和其他細節

的網址,我重定向到從這裏:

https://oauth-redirect.googleusercontent.com/r/****?code=abcdefgh&state=CtcCQUxWM2ROU3hNMjl4LUItVXhQSGd4THRMLU4yNExnb3lYbGRKQnQwa3NwTVFva19NUWpYNE5jNGJURzIyZFN3RDBXd2d4enFGVWJGb0Q0ZW1vaS1OaFdkaHdhb05HZ2xlWTR6SllKVlRWYktwd09faklyUTVheFhQbGw2dmVKYzVFTk05N3B1QkxaZG41RVdHN0wyTktvRFdCYzFPVFBzM1dQUlFtN2RmM1VtRU4****(state) 

這重定向我:

https://www.google.co.in/?gws_rd=cr&dcr=0&ei=5c_fWdfKNYndvASO7o6ACA 

編輯3:我檢查網絡日誌:

result_code=FAILURE&result_message=Account+linking+failed 

我還添加/令牌/谷歌如AOG令牌URL。它在heroku中被檢測到,但是我從未在我的代碼中收到這個請求。

注:我使用python瓶和託管在Heroku

+0

可以更新的問題,說明你是從谷歌獲得的網址是什麼? (掩蓋掉諸如client_id之類的東西,來自重定向的項目ID以及名稱中具有「祕密」的任何參數值。)讓我們確保我們獲得了我們認爲我們正在獲得的請求。還請包括您重定向到的URL(再次,掩蓋您的項目ID)。 – Prisoner

+0

嘿,prisioner根據要求更新。讓我知道你是否需要進一步澄清! – charlie

回答

2

一旦你驗證過的用戶我的應用程序,你需要回到返回臨時授權碼給谷歌。之後,Google會交換此授權碼以獲得訪問令牌和刷新令牌,但您還沒有。重要的部分是,這段代碼需要是唯一的,並且稍後,您將能夠識別它的用途。代碼應該在有限的時間內有效--10分鐘是通常可接受的時間範圍。

在Google作爲登錄的一部分發送給您的請求中,他們提供了redirect_uristate作爲參數。你需要在你的回覆中使用這些。 (state可以是任何東西 - 你不應該在乎它是什麼,你只是將它發送回你的重定向。其目的是通過防止重播攻擊來提高安全性。)

確認redirect_uri具有形式

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID 

哪裏YOUR_PROJECT_ID是......你猜對了,你的項目的ID。您可以在雲端控制檯中找到它。

然後,您會用一些額外的參數,將用戶重定向到這個網址:

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING 

YOUR_PROJECT_ID被如上所述,AUTHORIZATION_CODE是你生成的代碼,並STATE_STRING是值了state您在請求中發送的參數。

有關詳細信息,你可以看到https://developers.google.com/actions/identity/oauth2-code-flow#handle_user_sign-in