3

我有一个使用 Google Javascript API 的客户端网络应用程序(无后端)。我对登录成功后获得的访问令牌有疑问。

从回调中,我们可以看到 access-token 设置为 1 小时后过期。

expires_in: "3600"

问题是,我怎样才能“获得一个新的令牌”?从文档中,我的印象是,在令牌无效后,我们必须(我引用)执行一个新的重新授权流程,并将立即设置为 true 以获得最新的访问令牌。

来源: https ://developers.google.com/+/web/api/javascript

但是,当我尝试再次调用 auth 方法时:

gapi.auth.authorize(parameters, callback)

我得到了令牌对象,但里面没有访问令牌。

{
    client_id: "{my_client_id}.apps.googleusercontent.com"
    cookie_policy: undefined
    expires_at: "1370371466"
    expires_in: "86400"
    g_user_cookie_policy: undefined
    issued_at: "1370285066"
    response_type: "token"
    scope: "https://www.googleapis.com/auth/plus.login https://gdata.youtube.com"
}

我错过了什么吗?我们通常如何在一个过期后获得一个刷新的令牌?

4

1 回答 1

0

在客户端,访问令牌是临时的。默认情况下,这是对用户资源的在线访问。为了再次获得访问令牌,您需要再次重定向用户以获得权限。

在 OAuth 协议中,您的应用程序请求授权以访问由范围标识的资源,并假设用户已通过身份验证并批准,您的应用程序会收到允许其访问这些资源的短期访问令牌,并且(可选或更精确地在服务器上side)刷新令牌以允许长期访问。

对于服务器端应用程序和用户资源的离线访问,您需要具有刷新令牌参考:Google Analytics API 自动登录

另请阅读:https ://developers.google.com/accounts/docs/OAuth2WebServer

https://developers.google.com/accounts/docs/OAuth2UserAgent

于 2014-02-13T18:06:14.530 回答