是否可以使用Azure移动服务声明或任何其他方式获取Facebook个人资料图片和用户朋友?
如下图所示,在天蓝色的后端,
如果不是公开个人资料,用户图片就会丢失。它看起来 喜欢公开个人资料只链接到facebook个人资料
我设置了user_friends但是当我使用下面的代码请求identites时, 我看到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后端的通用解决方案?
答案 0 :(得分:0)
AFAIK,您只能从当前经过身份验证的用户检索基本配置文件(name
,picture
,email
等)。根据我的理解,如果您希望移动应用程序后端处理针对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 authentication和Custom HTTP Endpoints。