我正在使用以下代码来获取azure移动服务中的用户详细信息。我正在尝试迁移到azure移动应用程序,并在easy api中获取用户详细信息。怎么做?
getIdentity({
success: function (identities) {
var req = require('request');
if (identities.facebook) {
var fbAccessToken = identities.facebook.accessToken;
var url = 'https://graph.facebook.com/me?access_token=' + fbAccessToken;
req(url, function (err, resp, body) {
if (err || resp.statusCode !== 200) {
console.error('Error sending data to FB Graph API: ', err);
// req.respond(statusCodes.INTERNAL_SERVER_ERROR, body);
} else {
try {
var userData = JSON.parse(body);
console.log(JSON.parse(userData));
res.json(userData);
//item.UserName = userData.name;
// request.execute();
} catch (ex) {
console.error('Error parsing response from FB Graph API: ', ex);
// request.respond(statusCodes.INTERNAL_SERVER_ERROR, ex);
}
}
});
答案 0 :(得分:1)
关注this example后,我编辑了该脚本,它适用于Google身份验证。
currentUser.getIdentity()
.then((data) =>
{
var http = require('request');
var url = 'https://www.googleapis.com/oauth2/v3/userinfo' +
'?access_token=' + data.google.access_token;
var reqParams = {
uri: url, headers: { Accept: 'application/json' } };
http.get(reqParams, function (err, resp, body) {
var userData = JSON.parse(body);
res.status(200).send( {message: userData});
});
}, console.error);
答案 1 :(得分:0)
此链接建议使用上下文在EasyTable Node.js脚本中请求其他用户详细信息,而不是EasyAPI。只有我能找到的资源不依赖于经典的Azure门户。
编辑:上面的代码对我不起作用,所以也许这会帮助其他人
答案 2 :(得分:0)
似乎已经有了内置功能。下面的代码是在您的客户端上调用.auth / me操作并返回您的声明对象。 claim对象是您在azure portal上选择的信息字典。
public async Task<AppServiceIdentity> GetIdentityAsync()
{
if (Client.CurrentUser == null || Client.CurrentUser?.MobileServiceAuthenticationToken == null)
{
throw new InvalidOperationException("Not Authenticated");
}
if (identities == null)
{
identities = await Client.InvokeApiAsync<List<AppServiceIdentity>>("/.auth/me");
}
if (identities.Count > 0)
return identities[0];
return null;
}
public class AppServiceIdentity
{
[JsonProperty(PropertyName = "id_token")]
public string IdToken { get; set; }
[JsonProperty(PropertyName = "provider_name")]
public string ProviderName { get; set; }
[JsonProperty(PropertyName = "user_id")]
public string UserId { get; set; }
[JsonProperty(PropertyName = "user_claims")]
public List<UserClaim> UserClaims { get; set; }
}
public class UserClaim
{
[JsonProperty(PropertyName = "typ")]
public string Type { get; set; }
[JsonProperty(PropertyName = "val")]
public string Value { get; set; }
}
因此,您将从名称
的索赔对象中获取信息 var name = identity.UserClaims.FirstOrDefault(c => c.Type.Equals("name")).Value;