【问题标题】:Facebook c# sdk Invalid access token signature on FacebookClientFacebook c# sdk FacebookClient 上的访问令牌签名无效
【发布时间】:2013-02-20 23:37:52
【问题描述】:

我对 Facebook c# sdk 有疑问。

当我尝试连接 accesstoken 时,它会给出一条错误消息: (OAuthException) 访问令牌签名无效

我的网址是:

https://www.facebook.com/dialog/oauth?client_id=" + _appid + "&redirect_uri=http://localhost:51656/Register.aspx?scope=email,publish_stream,offline_access,create_event,user_about_me,user_activities,user_birthday,user_education_history,user_events,user_groups,user_interests,user_likes ,user_location,user_notes,user_religion_politics,user_relationship_details,user_photos,user_status

我的代码是:

    string _code ="";
    string _appid = "184604574912126";
    string _accesstoken;

    protected void Page_Load(object sender, EventArgs e)
    {
       if (Request.QueryString["code"] != null)
        {
            _code = Request.QueryString["code"].ToString();
        }
        if (_code != "")
        {
           _accesstoken = _appid + "|" + _code;
           vFB = new FacebookClient(_accesstoken);               
        }
        try
        {
            JsonObject vmyobject = (JsonObject)vFB.Get("/me");
        this line giving exaption.
     }

我错过了什么?

【问题讨论】:

    标签: facebook-c#-sdk


    【解决方案1】:

    获取访问令牌的方式不对 请看这段代码

            string AP_ID = System.Configuration.ConfigurationManager.AppSettings["FacebookAppID"];
        string client_secret = System.Configuration.ConfigurationManager.AppSettings["FacebookAppSecret"];
        string mywebsite = System.Configuration.ConfigurationManager.AppSettings["FacebookAppSecret"];
        string oathPage = System.Configuration.ConfigurationManager.AppSettings["PostAuthorizeRedirectURL"]; 
        string redirect_uri = mywebsite + oathPage;
                    string code = Page.Request.QueryString["code"];
                string link = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&code={1}&client_secret={2}&redirect_uri={3}", AP_ID, code, client_secret, redirect_uri);
                WebClient webq = new WebClient();
                string access_token = webq.DownloadString(link);
                int pos2 = access_token.IndexOf("&expires");
                if (pos2!=-1)
                    access_token = access_token.Substring(13, pos2 - 13);
                else access_token = access_token.Substring(13, access_token.Length-13);
    

    【讨论】:

      【解决方案2】:

      使用此方法从代码中获取有效的access_token

       public string GetAccessTokenFromCode(string AppID, string AppSecret, string RedirectURL, string Code)
      {
      WebClient wc = new WebClient();
      string u2 = "https://graph.facebook.com/oauth/access_token?client_id=" + AppID + "&redirect_uri=" + RedirectURL + "&client_secret=" + AppSecret + "&code=" + Code + "&state=anytexthere";
      string access = wc.DownloadString(u2);
      access = access.Substring(access.IndexOf("access_token") + 13);
      if (access.Contains("&"))
      {
      string accesstoken = access.Substring(0, access.IndexOf("&"));
      return accesstoken;
      }
      
      return access;
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        • 1970-01-01
        • 2019-09-14
        • 2011-10-25
        • 2012-06-22
        • 2022-09-27
        • 1970-01-01
        相关资源
        最近更新 更多