在azure移动应用程序中使用getidentity:easy api

时间:2016-03-06 13:14:52

标签: api azure mobile

我正在使用以下代码来获取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);
                    }
                }
            });

3 个答案:

答案 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门户。

https://azure.microsoft.com/en-in/documentation/articles/app-service-mobile-node-backend-how-to-use-server-sdk/#Debugging

编辑:上面的代码对我不起作用,所以也许这会帮助其他人

答案 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;