【问题标题】:How to refresh the Google Plus bearer token when using the AWS JavaScript SDK使用 AWS JavaScript SDK 时如何刷新 Google Plus 不记名令牌
【发布时间】:2014-12-20 06:13:08
【问题描述】:

我正在尝试使用 AWS“浏览器 SDK”来执行对某些 AWS 服务的直接调用,并使用 Google Plus 执行用户身份验证。

初始身份验证工作正常,在我设置从 AWS 内部的 Google Plus 接收到的不记名令牌后,我可以在浏览器中执行直接 S3 调用。我的问题来自长时间的用户会话,初始不记名令牌过期并且我对 S3 的调用开始引发错误(错误是我使用了过期的访问令牌)。

我怀疑 AWS 没有调用 Google Plus 端点来获取刷新令牌,它仍然使用我设置的初始令牌。

那么有没有办法强制 Google API 给我一个全新的不记名令牌,我可以在 AWS 中设置它?如果我打电话:

var clientId = "<my client id>",
    scope = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email";

gapi.auth.authorize({
    client_id: clientId,
    scope: scope,
    immediate: true
}, function(r) { console.log(r.id_token) });

我总是得到相同的不记名令牌,即使它已过期。但如果我刷新页面,我确实会得到一个全新的页面。那么有没有办法强制 GAPI 给我一个新的不记名令牌,我可以在 AWS 中设置它。或者我需要调用 AWS 开发工具包上的某个方法以确保它使用刷新令牌?

更新:如果我像这样调用auth.signIn 而不是auth.authorize

gapi.auth.signIn({
    clientid: clientId,
    scope: scope,
    cookiepolicy : 'single_host_origin',
    response_type: 'id_token token gsession',
    callback: loginToGoogle,
    immediate: true
})

然后我得到一个新的id_token,但它会在几毫秒内显示烦人的登录弹出窗口,然后它会自行关闭。有没有其他方法可以在不显示弹出窗口的情况下在客户端获取新的不记名令牌?

【问题讨论】:

    标签: amazon-web-services oauth-2.0 aws-sdk


    【解决方案1】:

    我很惊讶 gapi.auth.authorize 在这种情况下不能正常工作。 可以补充一下吗

    cookiepolicy : 'single_host_origin', response_type: 'id_token token gsession',

    到 gapi.auth.authorize 参数?

    您从什么时候开始出错?是令牌过期的时候吗(您可以通过检查响应中的 .expires_at 属性来确定)?令牌过期时你得到相同的 access_token 吗?

    离线访问流程是另一种选择:https://developers.google.com/accounts/docs/OAuth2WebServer

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2018-12-01
      • 1970-01-01
      • 2020-03-14
      • 2018-03-14
      相关资源
      最近更新 更多