主要問題:我該如何通過C#SDK爲60天訪問令牌擴展2小時訪問令牌?你能提供一個只有代碼已經交易2小時訪問令牌的部分樣本嗎?C#Facebook SDK將訪問令牌延長至60天
背景:我一直在這裏四處尋找並嘗試各種解決方案,還沒有找到一個適合我的工具。我可以成功地進行/ me調用,並獲得有關當前用戶的信息,但是當我嘗試擴展訪問令牌時失敗。
這個應用程序的目標是允許用戶設置一個帖子,並在一段時間後監控喜歡和評論。顯然,我們需要60天的代幣。
當您可以請求永久令牌時,在其他人完成了90%的工作後,我正在執行此項目。我的工作是修復它,以便我們可以使用60天的令牌。我可能會問非常愚蠢的後續問題。準備好!
當前流程:用戶設置他的帖子,點擊一個按鈕,我們提示他們通過javascript sdk授權我們的應用/登錄到Facebook。在他們登錄後,我們在JavaScript中處理其他不相關的東西,然後將其AJAX處理到C#中,以便將一些信息保存到我們的數據庫(包括令牌)並進行發佈。一切都很順利,我在javascript中獲得訪問令牌的情況非常好,我可以使用該2小時令牌獲取登錄用戶的相關信息,但是當我嘗試擴展時,出現兩個錯誤中的一個,我將在下面提及導致它們的代碼。
我已經試過:
工作: 我相信我發現這在另一篇文章在這裏。 var fbClient = new FacebookClient(accessToken);
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("client_id", appId);
parameters.Add("redirect_uri", redirectURI);
parameters.Add("client_secret", appSecret);
parameters.Add("code", accessToken);
var result = fbClient.Get("/me", parameters);
不工作: 這來自不同的地方,包括這裏的SDK文檔。我已經看到包括重定向網址在內的人們說,當您最初獲得訪問權限時需要匹配那個網址,但我們在JavaScript中這樣做了,並且沒有使用重定向網址。 Dictionary參數2 =新Dictionary();
parameters2.Add("client_id", appId);
//parameters2.Add("redirect_uri", redirectURI);
parameters2.Add("client_secret", appSecret);
//parameters2.Add("code", accessToken);
parameters2.Add("grant_type", "fb_exchange_token");
parameters2.Add("fb_exchange_token", accessToken);
var result2 = fbClient.Get("/oauth/access_token", parameters2);
錯誤:{Newtonsoft.Json.JsonReaderException:解析值時遇到意外的字符:a。 1號線,位置1 誤差2:如果我註釋掉grant_type和fb_exchange_token並取消註釋代碼和redirecturi我得到同樣的錯誤作爲下一個方法...
不工作: 我是從另一個崗位抓起這裏複製/粘貼重命名以匹配我的變量。 Unable to get long lived expiration token
dynamic result3 = new ExpandoObject();
try
{
dynamic parameters3 = new ExpandoObject();
parameters3.grant_type = "fb_exchange_token";
parameters3.fb_exchange_token = accessToken;
parameters3.client_id = appId;
parameters3.client_secret = appSecret;
result3 = fbClient.Get("oauth/access_token", parameters);
}
catch (FacebookOAuthException err)
{
result3.error = "Error";
result3.message = err.Message;
}
catch (Exception err)
{
result3.error = "Error";
result3.message = err.Message;
}
錯誤:{(OAuthException)(OAuthException)無效的驗證碼格式}
不幸的是,Facebook c#sdk很糟糕。我用它來做3個項目,讓我很後悔。 – DarthVader