在我的后端,我尝试使用以下代码在我的 iphone 模拟器上使用 google 成功登录后返回的 auth_code 中提取凭据:
credentials = client.credentials_from_clientsecrets_and_code(
CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/calendar.readonly'],
auth_code,
)
在 iOS 上通过融合 GIDSignIn 获得身份验证代码,并将其传递到我的 Python FastAPI 服务器以调用上面的代码。但我不断收到
request_uri_mismatch
错误:
oauth2client.client.FlowExchangeError: redirect_uri_mismatchBad Request
我知道客户端是一个已弃用的库,但我也尝试了较新的 google-auth 库,它们使用 Flow 并返回相同的错误。
我已经广泛关注并重新检查了 Google 的教程:https://developers.google.com/identity/sign-in/ios/offline-access。 我还参考了其他 Stack Overflow 答案并广泛检查了我启用的重定向 url,但由于某种原因它仍然不起作用
有效的是我尝试验证 ID 令牌,并且工作正常并正确返回电子邮件和用户属性
verified_info = id_token_verifier.verify_oauth2_token(id_token, requests.Request(), CLIENT_ID)
我使用 iOS 客户端凭据和后端凭据,这是我的凭据:
浏览了几十个其他答案后,终于找到一位绅士的建议,只需添加
redirect_uri=''
,如下所示:
credentials = client.credentials_from_clientsecrets_and_code(
CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/calendar.readonly'],
auth_code,
redirect_uri=""
)