我正在尝试使用Gmail Oauth。
当我用 immediate:true 调用此函数时,它仍然在授权时显示弹出窗口。
请告诉我是否存在任何错误,也可以采用其他方法。
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, callbackAuthResult);
这是我的代码:
function signin(getAuthStatus) {
gapi.auth.authorize({
'client_id': 'myID',
scope: 'email', immediate: true
},getAuthStatus);
}
function getAuthStatus() {
gapi.client.Myendpoint.MyEndpointMethod().execute(function (resp) {
console.log(resp);
}
答案 0 :(得分:3)
首先,我们必须了解oauth过程的工作原理,
在Google OAuth中,
如果立即值为 false ,则浏览器会打开一个弹出窗口,人们必须允许您的应用从Google获取详细信息。
如果立即值为 true ,则会自动授权,无需任何弹出窗口,人们不必允许该应用程序。
将立即值保持为 false ,同时您要求用户首次登录您的应用程序,然后浏览器将打开弹出窗口,用户将允许您的应用程序获取细节。从下次开始,无论您在何处使用OAuth在应用中进行经过身份验证的呼叫,都应将立即值设置为 true ,因为用户已经允许您的应用,因此您将获得用户信息直接而不是一次又一次地询问他的权限。