1

是否可以使用 Azure 移动服务声明或任何其他方式获取 Facebook 个人资料图片和用户朋友?

在 azure 后端,如下所示,

  • 如果不是公共个人资料,则用户图片在那里丢失。看起来公共个人资料仅链接到 Facebook 个人资料

  • 我设置了 user_friends,但是当我使用下面的代码请求身份时,我看到 9 个声明(姓名、姓氏、全名、性别、个人资料等),但我没有得到任何朋友信息。

在此处输入图像描述

我正在使用的代码很简单

 identities = await App.Client.InvokeApiAsync<List<AppServiceIdentity>>("/.auth/me");

根据文档,它应该将我在后端设置的内容作为声明类型和值的字典返回。

我可以使用如下简单的http请求来实现这一点

  var requestUrl = $"https://graph.facebook.com/v2.11/me/friends?fields=id,picture.width(72).height(72),name&access_token=" + accessToken;

但如果可能的话,我想要一个使用 azure 后端的通用解决方案?

4

1 回答 1

0

AFAIK,您只能从当前经过身份验证的用户那里检索基本配置文件(、、、namepictureemail。根据我的理解,如果您希望您的移动应用程序后端能够处理针对 facebook 的 Graph API 的请求,而不是检索访问令牌并在您的移动客户端中发送请求,您可以创建一个自定义 Web API 并使用以下代码来获取访问令牌并在您的移动后端发送请求:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var requestUrl = $"https://graph.facebook.com/v2.11/me/friends?fields=id,picture.width(72).height(72),name&access_token=" + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(requestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}    

对于您的移动客户端,您可以利用InvokeApiAsync调用移动后端提供的相关自定义 Web API。更多详细信息,您可以参考How to: Work with authenticationCustom HTTP Endpoints

于 2017-11-13T07:51:27.057 回答