Google javascript登录API:无法离线访问

时间:2016-01-22 15:03:23

标签: javascript google-api google-oauth google-signin

我正在尝试为服务器端应用实施Google登录,如Google文档中所示:Google Sign-In for server-side apps,但同意窗口从不要求离线访问。选择一个用户后,它就会关闭并调用登录处理函数。

因此,当我获得一次性代码并将其发送到服务器时,我无法将其换成刷新令牌,仅用于访问和ID令牌。

这是我的客户代码:

在HTML文件中:

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>

Javascript代码:

var auth2;
function init() {
    gapi.load('auth2', function() {
        auth2 = gapi.auth2.init({
            client_id: '<my client id>.apps.googleusercontent.com',
            scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appfolder'
        });
    });
    $('#signinButton').click(function() {
        auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(onSignIn);
    });
}

function onSignIn(authResult) {
    if (authResult['code']) {
    // Send the code to the server
    }
}

Google控制台中的项目包含一个包含相关javascript来源且没有授权重定向URI的Web客户端凭据。

我应该怎样做才能强制同意窗口要求离线访问

1 个答案:

答案 0 :(得分:7)

我可以通过将containingClass参数添加到'approval_prompt' : 'force'函数来强制提示离线。

E.g。

auth2.grantOfflineAccess