【问题标题】:Google OAuth2 Refresh Token with JavaScript使用 JavaScript 的 Google OAuth2 刷新令牌
【发布时间】:2017-05-12 23:54:07
【问题描述】:

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

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

在这种情况下如何处理令牌过期和使用刷新令牌:

我正在使用https://apis.google.com/js/platform.js 来验证 Google 帐户:

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

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

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 上,我正在检查请求标头中提供的令牌:

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

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

【问题讨论】:

    标签: javascript oauth google-oauth


    【解决方案1】:

    我使用的令牌不正确。

    我变了:

    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 },
    

    以这种方式发送当前令牌。我没有意识到令牌会在后台自动刷新。我每次都发送原始令牌,所以一旦过期,应用程序就会失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 2013-10-01
      • 2021-08-27
      • 2022-06-19
      • 2013-08-30
      • 2014-08-12
      • 2020-02-21
      相关资源
      最近更新 更多