2016-08-23 81 views
0

我正在Xamarin.Forms中编写一个简单的应用程序,允许用户通过Facebook,Google,Instagram,Twitter等社交媒体进行身份验证。我正在使用Xamarin。 auth来做到这一点。我有一个Facebook登录问题。我使用的官方指南中报告的同一代码:如何使用xamarin.auth检索Facebook上的个人资料信息

https://components.xamarin.com/gettingstarted/xamarin.auth

但是,应用程序请求用户提供凭据,响应后(在代码中,t.Result.GetResponseText(),第3节)是一个json包含Facebook用户名和姓氏,以及一个名为“id”的字段。相反,我需要用户的所有配置文件信息,例如年龄,性别等。我想我必须使用返回的id来为Facebook服务构建一个http请求,以便从id中检索数据。

回答

2

您需要在您的Facebook链接中指定必​​填字段。

例子:

var request = new OAuth2Request("GET", new Uri("https://graph.facebook.com/me?fields=email,first_name,last_name,gender,picture"), null, eventArgs.Account); 

我如何获取这些字段后

var response = await request.GetResponseAsync(); 
var obj = JObject.Parse(response.GetResponseText()); 

var id = obj["id"].ToString().Replace("\"", ""); 
var name = obj["first_name"].ToString().Replace("\"", ""); 
var lastName = obj["last_name"].ToString().Replace("\"", ""); 
var email = obj["email"].ToString().Replace("\"", ""); 
+0

为什么我得到这个错误(在线 - VAR OBJ = JObject.Parse(response.GetResponseText( ));):任务不包含GetResponseText的定义? – TigerLionCheetah

+0

因为也许你定义变量“响应”就像任务和任务不包含GetReponseText方法的任何定义,所以你需要像响应类型一样定义“响应”变量。 – Katz

+0

查看该图片: https://flic.kr/p/Wk1uJT – Katz

相关问题