如何使用带有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
...
});
非常感谢任何帮助!
答案 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) {...});