我正在尝试为服务器端应用实施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客户端凭据。
我应该怎样做才能强制同意窗口要求离线访问?
答案 0 :(得分:7)
我可以通过将containingClass
参数添加到'approval_prompt' : 'force'
函数来强制提示离线。
E.g。
auth2.grantOfflineAccess