簡體   English   中英

帳戶與Google上的操作相關聯

[英]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_uristate作為參數。 您需要在回復中使用這些內容。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM