2012-09-12 254 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