我有一个网站写(.net 4),我想创建一些Facebook登录。
在我为c#下载Facebook sdk后,我想使用访问令牌获取用户信息。
在我看来,我做错了,我检查的所有例子,都与我的不一样。而不是通过以下方式让我参与其中:
me["id"] // mine
me.id // examples
当我尝试获取像示例这样的值时,我遇到了错误。
我在获取用户的电子邮件地址时遇到问题,已经将电子邮件添加到范围:
此方法负责获取访问令牌:
public string GetAccessToken()
{
Dictionary<string, string> tokens = new Dictionary<string, string>();
string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}",
strAppId, Request.Url.AbsoluteUri, strScope, Request["code"].ToString(), strAppSecret);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string vals = reader.ReadToEnd();
foreach (string token in vals.Split('&'))
{
tokens.Add(token.Substring(0, token.IndexOf("=")),
token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1));
}
}
string access_token = tokens["access_token"];
return access_token;
}
此方法负责获取用户信息:
public string GetUserInfo(string strToken)
{
var client = new FacebookClient(strToken);
dynamic me = client.Get("me");
User user = new User();
try
{
string user_id = me["id"];
string user_first_name = me["first_name"];
string user_last_name = me["last_name"];
string user_name = me["username"];
string user_location = me["location"]["name"];
string user_city = me["hometown"]["name"];
//user_mail = me.email; }
catch(Exception ex)
{
}
return string.Empty;
}
当试图在me.email或我[“email”]上运行时,我收到此错误:
'me.email' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' dynamic {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}
答案 0 :(得分:1)
我建议您使用Microsoft.AspNet.Mvc.Facebook
。它易于使用,并且已经完成了所有这些属性。
http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-facebook-birthday-app