場景:我想通過JS登錄獲取fb頁面管理的用戶訪問令牌,並檢索令牌ONE TIME,並將其存儲在數據庫中。然後每天,我想做牆貼到那些頁面。發佈到FB頁面錯誤
我正在使用JS獲取初始令牌並將其存儲。然後使用c#FacebookSDK進行Web請求。
FB.login(function (response) {
var r = response;
// get access token of the user and update in database
$("#FacebookAccessToken").val(response.authResponse.accessToken);
},
{
scope: 'manage_pages,publish_stream'
});
現在我保存這個令牌數據庫,我將使用這爲今後的圖形電話 - 這是正確的?
在服務器端,當我需要做的前一天,一個帖子我檢索令牌,並做如下處理:
// step 1 get application access token
var fb1 = new FacebookClient();
dynamic appTokenCLient = fb1.Get("oauth/access_token", new
{
client_id = appId,
client_secret = appSecret,
grant_type = "client_credentials",
scope = "manage_pages,publish_stream",
redirect_uri = siteUrl
});
var fbTokenSettingVal = GetTokenFromDB(); // getting access token from database which was stored during JS fb login
// step 2 extend token
var fb2 = new FacebookClient(appTokenCLient.access_token);
dynamic extendedToken = fb2.Get("oauth/access_token", new
{
client_id = appId,
client_secret = appSecret,
grant_type = "fb_exchange_token",
fb_exchange_token = fbTokenSettingVal.Val
});
var userExtendedToken = extendedToken.access_token; // get extended token and update database
// step 3 get page access token from the pages, that the user manages
var fb3 = new FacebookClient { AppId = appId, AppSecret = appSecret, AccessToken = userExtendedToken };
var fbParams = new Dictionary<string, object>();
var publishedResponse = fb3.Get("/me/accounts", fbParams) as JsonObject;
var data = JArray.Parse(publishedResponse["data"].ToString());
var pageToken = "";
foreach (var account in data)
{
if (account["name"].ToString().ToLower().Equals("PAGE_NAME"))
{
pageToken = account["access_token"].ToString();
break;
}
}
// step 4 post a link to the page - throws error !
var fb4 = new FacebookClient(pageToken);
fb4.Post("/PAGE_NAME/feed",
new
{
link = "http://www.stackoverflow.com"
});
最後4步拋出錯誤,張貼到選定的頁面時: 用戶未授權應用程序執行此操作
嘗試了幾種不同的方式,但徒勞無功。假設只有一個簡單的步驟,我在這裏做錯了。
此外,在提出請求之前,每次都可以爲用戶擴展fb訪問令牌嗎? 任何方式來檢查令牌是否過期?
它是否適合您自己?我的意思是,如果您(應用程序開發人員)經歷了整個登錄過程並嘗試通過應用程序發佈其中一個粉絲頁面,它是否有效?如果不是,則認證流程有問題。順便說一下,我看到這個publish_stream很多。不過,我可以使用'publish_actions'正常工作。不知道是否是這樣。 – tattvamasi
問題跟蹤器的頂部是這個問題嗎? https://developers.facebook.com/bugs/754785807919193/ - 這適用於未發表的帖子 – Igy
感謝您的回覆,得到了原因,看到我下面的回覆。 – Umair