使用Cordova的azure-mobile-apps刷新Google令牌

时间:2017-03-14 18:40:44

标签: cordova azure azure-mobile-services google-login

如何使用带有Cordova的azure-mobile-apps刷新Google令牌?

根据我的理解,我需要使用'access_type = offline'或' /。auth / refresh'。但是,我不确定如何实现这些。 以下是我的尝试,返回403 - 禁止:

//var url = AzureDbSvc.client.applicationUrl + '/.auth/me'; /* Note - This Works */
var url = AzureDbSvc.client.applicationUrl + '/.auth/refresh'; 

var headers = new Headers();
headers.append('X-ZUMO-AUTH', AzureDbSvc.client.currentUser.mobileServiceAuthenticationToken);
fetch(url, { headers: headers })
.then(function (data) {
    console.log(data.status + ' : ' + data.statusText); //<<-- 403 : Forbidden
    ...
});

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

调用/.auth/me时是否看到刷新令牌?必须存在刷新令牌才能使/.auth/refresh API正常工作。

顺便说一下,您可以通过启用应用程序日志记录来查看这些错误的详细信息。更多细节:https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-enable-diagnostic-log。让我们知道这些细节是什么,我们可以帮助弄清楚如何使场景发挥作用。

答案 1 :(得分:1)

谢谢克里斯!以下是有效的,但如果您发现任何问题或者是否可以改进,请告诉我。

// Initial google login
AzureDbSvc.client.loginWithOptions('google', { parameters: { access_type: 'offline' } })
    .then(function (token) {...});


// Refresh token request
var headers = new Headers();
headers.append('X-ZUMO-AUTH',
   AzureDbSvc.client.currentUser.mobileServiceAuthenticationToken);

fetch(url, { headers: headers })
    .then(function (data) {
       console.log(data.status + ' : ' + data.statusText); //<<== 200 : OK
       var user_json = data.json();
       console.log('user_json:' + user_json);
       return user_json;
}).then(function (refreshToken) {...});