gpt4 book ai didi

oauth-2.0 - 如何刷新 google plus bearer token (javascript)?

转载 作者:行者123 更新时间:2023-12-03 07:56:48 28 4
gpt4 key购买 nike

我在单页 (javascript) 应用程序中使用 google HTML 登录按钮从使用 Google 登录的用户那里获取授权对象。此处有详细说明:https://developers.google.com/+/web/signin/add-button .

我成功收到了如下所示的 token 。由于此 token 将在 1 小时后过期,因此我需要每 30 分钟左右刷新一次 token ,直到用户选择注销。我正在尝试通过调用:

gapi.auth.authorize({client_id: "90... ...92.apps.googleusercontent.com", scope: "profile email", immediate: true}, function() { console.log( arguments ); } );

但没有运气。我收到相同的 token 直到它过期,之后我取回空的(未登录) token 。如何在用户无需不断重新登录的情况下保留/刷新不记名 token ?

{
_aa: "1"
access_token: "ya29.1.AA... ...BByHpg"
authuser: "0"
client_id: "90... ...92.apps.googleusercontent.com"
code: "4/Nyj-4sVVcekiDnIgMFh14U7-QdRm.svPMQSODiXMbYKs_1NgQtmX9F90miwI"
cookie_policy: "single_host_origin",
expires_at: "1398341363",
expires_in: "3600",
g_user_cookie_policy: undefined,
id_token: "eyJhbGciOiJ... ...0Es1LI"
issued_at: "1398337763",
num_sessions: "2",
prompt: "none",
response_type: "code token id_token gsession",
scope: "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
session_state: "b92d67080... ...73ae",
state: "",
status: {
google_logged_in: true,
method: "AUTO",
signed_in: true
},
token_type: "Bearer"

}

最佳答案

使用客户端流程(即 Java 脚本),您只能收到短暂的(约 1 小时)access_token。如果你想能够刷新它,你需要一个只能使用服务器端流程获得的refresh_token

您可以找到更多信息here .

基本上,它是这样工作的:

  1. 用户连接到您的网站并点击“登录按钮”
  2. 您收到一个 access_token 和一个 code JavaScript
  3. 您将此代码发送到您网络服务器上的 PHP 脚本
  4. 该脚本向 Google 服务器发出请求并用您的代码交换一个access_token(应该与您刚刚在 JavaScript 中收到的相同)和一个 refresh_token
  5. 您需要将此 refresh_token 存储在某处(在数据库中示例)因为它只会发行一次(当用户授予许可)
  6. 当您的一个access_token即将过期时,您可以使用您的refresh_token 获取另一个有效的access_token

关于oauth-2.0 - 如何刷新 google plus bearer token (javascript)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23275830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com