1

语境

我们成功地使用https://accounts.google.com/o/oauth2/auth以获取与以下应用程序权限的authentication_codeGetOpenIdConnect返回凭据无效

  • 知道你在谷歌
  • 谁查看您的电子邮件地址
  • 查看您的基本个人资料信息

我们还成功地利用https://accounts.google.com/o/oauth2/token来交换身份验证码为access_tokenid_token

问题

随着该access_token,我们使用https://www.googleapis.com/plus/v1/people/me/openIdConnect获取配置文件信息。这是带有以下标题的GET请求。

Authorization: Bearer access_token 

从谷歌的反应必然是这个错误:

"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "authError", 
    "message": "Invalid Credentials", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "Invalid Credentials" 
} 

This Google documentation提出了两个建议:

  • 使用长寿命的刷新令牌刷新访问令牌。
  • 如果失败,请指导用户完成OAuth流程,如使用Google Drive授权您的应用程序中所述。

我们尝试了这两种方法并收到相同的错误。

回答

1

我们偶然在授权标题中使用id_token。我们需要确保使用access_token

+0

拯救了我的生命!为此我几乎浪费了整整一天的时间。所有这些都非常复杂,文档很常见。使用Google API是一个小小的地狱。 – Rolice