我有一个网站write(.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或我["电子邮件"]上运行时,我会收到以下错误:
'me.email' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' dynamic {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}
我建议您使用Microsoft.AspNet.Mvc.Facebook
。它很容易使用,并且已经完成了所有这些属性。
http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-facebook-birthday-app