C#facebook SDK不行

时间:2013-12-06 00:02:00

标签: c# facebook facebook-graph-api

我有一个网站写(.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}

1 个答案:

答案 0 :(得分:1)

我建议您使用Microsoft.AspNet.Mvc.Facebook。它易于使用,并且已经完成了所有这些属性。

http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-facebook-birthday-app