javascript - 谷歌javascript登录api : no offline access

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

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

因此,当我获得一次性代码并将其发送到服务器时,我无法将其交换为刷新 token ,只能交换访问 token 和 ID token 。

这是我的客户端代码:

在 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 的网络客户端凭据。

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

最佳答案

通过将参数 'approval_prompt' : 'force' 添加到 auth2.grantOfflineAccess 函数调用中,我可以强制提示离线。

例如

auth2.grantOfflineAccess({'redirect_uri' : 'postmessage', 'approval_prompt' : 'force'}).then(onSignIn);

关于javascript - 谷歌javascript登录api : no offline access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34949727/

相关文章:

java - Google oauth2 在 Spring Boot 中登录,刷新 token 为空,在远程服务器中失败,在本地主机中工作

javascript - 如何执行包含在字符串中的函数?

javascript - 获取 php 数组后将其转换为 javascript

node.js - 如何授权访问 Google Cloud Function 中的 Directory API

python - 尝试 google voice api 但在客户端模块上收到 ImportError

google-api - 如何更改项目的 OAuth 同意屏幕电子邮件地址?

javascript - JavaScript 中动态加载的问题

javascript - JS : how to get current datetime?

c# - 如何使用 SSIS 组件 (C#) 和 Google.Apis.AnalyticsReporting.v4 ETL 谷歌分析数据

rest - 在 Delphi 中哪里将访问 token 附加到 google REST 请求?