[英]Account linking with actions on google
我在Google的“操作”中遇到有關帳戶關聯的問題:
我可以對用戶進行身份驗證並訪問其電子郵件地址和用戶名,但是在此之后,如何將用戶重定向回Google助手並關閉已通過身份驗證的瀏覽器?
任何幫助將不勝感激!
更新:嘿囚犯對此非常感謝。 我按照您說的做了,是的,當我在模擬器中測試它時,它確實重定向到google.com,但沒有result_code = SUCCESS。
鏈接是:
https://www.google.co.in/?gws_rd=cr&dcr=0&ei=z77fWbjQGIXxvATs_oqwBA
現在,如果我輸入Talk to ...,它再次向我顯示您需要鏈接帳戶的消息!
在設備中,瀏覽器會自動關閉,並顯示SIGNING_IN,但是當我鍵入意圖時,它無法識別。
如果您能指出正確的方向,那就太好了! (我不確定,但是我可能正處於您提到的令牌交換階段,但是我不知道如何進行操作!)
更新2:根據要求,我遵循的整個流程:這是我從debugInfo收到的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/
當我將此內容粘貼到瀏覽器中時,我在授權端點收到的請求是:
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://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中添加了/ token / google作為令牌URL。 在heroku中檢測到它,但是我從未在我的代碼中收到此請求。
注意:我正在使用python flask並將我的應用程序托管在heroku上
對用戶進行身份驗證后,您需要將臨時身份驗證代碼返回給Google。 稍后,Google會將此身份驗證代碼交換為訪問令牌和刷新令牌,但您還沒有。 重要的部分是該代碼必須唯一,以后,您將能夠識別其用途。 該代碼應在有限的時間內有效-10分鍾是公認的時間范圍。
在Google作為登錄名發送給您的請求中,他們提供了redirect_uri
和state
作為參數。 您需要在回復中使用這些內容。 ( state
可以是任何東西-您不必關心它是什么,您只需通過重定向將其發送回即可。其目的是通過防止重放攻擊來提高安全性。)
驗證redirect_uri
是否具有以下格式:
https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
YOUR_PROJECT_ID
在哪里...您猜對了,即項目的ID。 您可以在雲控制台中找到它。
然后,您將使用一些其他參數將用戶重定向到該URL:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.