2012-03-26 123 views
1

我一直在使用Facebook C#SDK一段時間了,但有一個真正的舊版本,我仍然在使用REST API(我認爲)。我只關心使用API​​張貼到我自己的Facebook頁面(我有一個WCMS插件,將內容發佈到我們機構的Facebook頁面)。我想知道是否有人知道如何使用最新版本的SDK獲取此設置的好教程?我也關心offline_access何時會消失,所以我們也會讚賞這種想法。我寧願不必每隔60天手動獲取一個新的訪問令牌。這似乎有些不必要,因爲我用來發布帖子的應用與我試圖發佈的頁面位於同一個FB帳戶中。使用Facebook C#SDK發佈到頁面

+0

一個經常被忽視的事實是,你不需要offline_access權限,當用戶離線後。如果您使用應用程序訪問令牌並且擁有publish_stream權限,則可以在用戶離線時發帖。你將無法做其他事情。 – 2012-03-26 21:27:11

回答

11

下面是做這件事:

public static string RefreshTokenAndPostToFacebook(string currentAccessToken) 
    { 
     string newAccessToken = RefreshAccessToken(currentAccessToken); 
     string pageAccessToken = GetPageAccessToken(newAccessToken); 
     PostToFacebook(pageAccessToken); 
     return newAccessToken; // replace current access token with this 
    } 

    public static string GetPageAccessToken(string userAccessToken) 
    { 
     FacebookClient fbClient = new FacebookClient(); 
     fbClient.AppId = "app id"; 
     fbClient.AppSecret = "app secret"; 
     fbClient.AccessToken = userAccessToken; 
     Dictionary<string, object> fbParams = new Dictionary<string, object>(); 
     JsonObject publishedResponse = fbClient.Get("/me/accounts", fbParams) as JsonObject; 
     JArray data = JArray.Parse(publishedResponse["data"].ToString()); 

     foreach (var account in data) 
     { 
      if (account["name"].ToString().ToLower().Equals("your page name")) 
      { 
       return account["access_token"].ToString(); 
      } 
     } 

     return String.Empty; 
    } 

    public static string RefreshAccessToken(string currentAccessToken) 
    { 
     FacebookClient fbClient = new FacebookClient(); 
     Dictionary<string, object> fbParams = new Dictionary<string, object>(); 
     fbParams["client_id"] = "app id"; 
     fbParams["grant_type"] = "fb_exchange_token"; 
     fbParams["client_secret"] = "app secret"; 
     fbParams["fb_exchange_token"] = currentAccessToken;    
     JsonObject publishedResponse = fbClient.Get("/oauth/access_token", fbParams) as JsonObject; 
     return publishedResponse["access_token"].ToString(); 
    } 

    public static void PostToFacebook(string pageAccessToken) 
    { 
     FacebookClient fbClient = new FacebookClient(pageAccessToken); 
     fbClient.AppId = "app id"; 
     fbClient.AppSecret = "app secret"; 
     Dictionary<string,object> fbParams = new Dictionary<string,object>(); 
     fbParams["message"] = "Test message";    
     var publishedResponse = fbClient.Post("/your_page_name/feed", fbParams); 
    } 
+1

謝謝,謝謝,謝謝!我正在爲我搜索全部,只有有效的答案。太好了! – 2013-07-25 04:05:49

+0

參考FacebookClient可能很好嗎? – 2018-02-19 13:27:21

相關問題