2012-09-12 73 views
2

我已经使用JSDK来验证我的Facebook应用的用户。 我正在获取访问令牌,但它在1/2小时内过期。 那么我怎样才能获得长期访问令牌?获得永久的Facebook访问令牌

我用的代码是:

var fb = new FacebookClient(); 
Dictionary<string,Object> sParams=new Dictionary<string,Object>(); 
sParams.Add("client_id",My_App_ID); 
sParams.Add("client_secret",My_App_Secret); 
sParams.Add("grant_type","fb_exchange_token"); 
sParams.Add("fb_exchange_token",Short_lived_accessToken); 
dynamic result = fb.Get("oauth/access_token",sParams); 
fb.AccessToken = result.access_token; 

,但它给了我的路线错误JSON字符串无效dynamic result = fb.Get("oauth/access_token",sParams);

什么错我在这里干什么?

回答

1

你会从端点中得到的回报只是 JSON,但形式只是纯文本

access_token=new_long-lived_access_token&expires=5130106 

所以,你必须以某种方式告诉您的应用程序(?),这个结果是不是JSON;或者如果FacebookClient :: Get始终希望答案是JSON,则可能必须完全使用其他方法来发出请求。

+0

是的,这就是为什么我在这里使用动态数据类型来获取FacebookClient.Get()的结果,但它不工作。 – Priya

+0

然后它可能是FacebookClient.Get()本身引发错误,因为它想要JSON而没有别的。查找另一种方法来发出HTTP请求并获得响应,但没有此要求。 – CBroe

+0

好的。谢谢..我会尽力的。 – Priya

4

使用此代码:

 var client = new FacebookClient(Short_lived_accessToken); 

     dynamic result = client.Post("oauth/access_token", new 
     { 
      client_id = My_App_ID, 
      client_secret = My_App_Secret, 
      grant_type = "fb_exchange_token", 
      fb_exchange_token = Short_lived_accessToken 
     }); 

     Response.Write("Long live access token: [" + result.access_token + "]"); 

希望它能帮助。

+0

仍然收到相同的错误。无论如何谢谢你的回答。 – Priya