gpt4 book ai didi

javascript - 使用 JavaScript 的 Google OAuth2 刷新 token

转载 作者:行者123 更新时间:2023-12-03 05:21:22 25 4
gpt4 key购买 nike

我已阅读有关刷新 token 的文档,但我很难将它们应用到我的代码中。

我认为正确的方法是php生成一个刷新 token ,将其发送到客户端,然后客户端停止使用id_token并仅使用刷新 token 发出请求?但这似乎违背了 token 过期的目的。

在这种情况下如何处理 token 过期并使用刷新 token :

我正在使用https://apis.google.com/js/platform.js通过以下方式验证 Google 帐户:

<div class="g-signin2" data-onsuccess="onSignIn"></div>

然后使用onSignIn,在登录后使用ajax从服务器获取一些数据,并使用php在后端服务器上检查id_token:

function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
id_token = googleUser.getAuthResponse().id_token;
angular.element(document.getElementById('data_controller')).scope().get_data();
};

相关的 Angular JavaScript 是:

angular.module('myApp', ['ngDialog']);
angular.module('myApp').controller('data_controller', function($scope, $q, $http, ngDialog) {
$scope.get_data = function() {
$http({
headers: { "Content-Type": "application/x-www-form-urlencoded", "id_token": id_token },
url: "http://myserver/api/application.php",
method: "POST",
data: {}
})
.then(function successCallback(response) {
$scope.my_data = response.data.results;
$scope.token_used = id_token;
console.log(response.data);
});
}
});

这工作正常,但是一旦 id_token 在一个小时后过期,ajax 将失败。

关于http://myserver/api/application.php我正在检查请求 header 中提供的 token :

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" . $id_token;

如果客户端重新加载页面,一切都会正常,因为 Google 会自动获取新的 id_token。

最佳答案

我错误地使用了 token 。

我改变了:

headers: { "Content-Type": "application/x-www-form-urlencoded", "id_token": id_token },

致:

headers: { "Content-Type": "application/x-www-form-urlencoded", "id_token": gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token },

这样它就发送当前 token 。我没有意识到 token 会在后台自动刷新。我每次都发送原始 token ,因此一旦过期,应用程序就会失败。

关于javascript - 使用 JavaScript 的 Google OAuth2 刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41366439/

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