我继承了用XAML编写的Windows 8应用程序。所以在C#中我打这个电话
user = await MobileServices.MobileService
.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount);
(这适用于Azure移动服务)
用户对象仅给我令牌和MicrosoftAccount:..............
为了对人员进行身份验证,我需要能够看到世界卫生组织正在请求访问...
我看下面的文章,但我似乎错过了什么?这篇文章中的javascript是否必须在Node.js中编写?
答案 0 :(得分:1)
目前,为了能够获得有关登录用户的更多信息,您需要再次调用该服务以检索用户信息。您实际上不需要请求其他登录范围(您提到的帖子的主题)来检索用户名,因为默认情况下会为所有提供程序提供。
This post应该具有在服务器端(node.js)编写的代码,以获取有关登录用户的更多信息。 TL; DR版本如下:
在服务器端:添加此自定义API(我将其称为“ userInfo ”;将GET权限设置为“user”,将所有其他权限设置为admin):
exports.get = function(request, response) {
var user = request.user;
user.getIdentities({
success: function(identities) {
var accessToken = identities.microsoft.accessToken;
var url = 'https://apis.live.net/v5.0/me/?method=GET&access_token=' + accessToken;
var requestCallback = function (err, resp, body) {
if (err || resp.statusCode !== 200) {
console.error('Error sending data to the provider: ', err);
response.send(statusCodes.INTERNAL_SERVER_ERROR, body);
} else {
try {
var userData = JSON.parse(body);
response.send(200, userData);
} catch (ex) {
console.error('Error parsing response from the provider API: ', ex);
response.send(statusCodes.INTERNAL_SERVER_ERROR, ex);
}
}
}
var req = require('request');
var reqOptions = {
uri: url,
headers: { Accept: "application/json" }
};
req(reqOptions, requestCallback);
}
});
}
在客户端,成功登录后,调用该API:
user = await MobileServices.MobileService
.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount);
var userInfo = await MobileServices.MobileService.InvokeApiAsync(
"userInfo", HttpMethod.Get, null);
userInfo
将包含带有用户信息的JObject
。有一项开放式功能请求可以在http://feedback.azure.com/forums/216254-mobile-services/suggestions/5211616-ability-to-intercept-the-login-response更好地完善此功能。