2012-09-20 34 views
1

這種情況: 我有一個網站,並創建「職位」。在創建新帖子時,我想將新帖子發送到我的Facebook頁面Feed。我已經把所有的代碼放到了這裏,只要我從圖形API瀏覽器工具中獲取訪問令牌,它就可以正常工作。大約一個小時之後,這不會起作用。當我從代碼生成訪問令牌時,它似乎是一個應用程序訪問令牌,並且它不允許我訪問我的頁面。所以最大的問題是如何從代碼中獲取用戶訪問令牌,這些代碼將有權訪問我的頁面。C#SDK張貼到我自己的頁面Feed

這是我如何獲取訪問令牌。

private static string GetApiAccessToken() 
    { 
     var client = new FacebookClient(); 
     dynamic result = client.Get("oauth/access_token", new 
     { 
      client_id = SessionGetter.Instance.FacebookApiKey, 
      client_secret = SessionGetter.Instance.FacebookSecretKey, 
      grant_type = "client_credentials", 
      scope = "manage_pages" 
     }); 

     return result.access_token; 
    } 

然後我用訪問令牌,試圖讓頁面訪問令牌,這是它告訴我,我沒有授權,所有我回來在字典中是一個「身份證」。

private static string GetPageAccessToken(string accessToken, string pageId) 
    { 
     try 
     { 
      var fb = new FacebookClient(accessToken); 

      var parameters = new Dictionary<string, object>(); 

      parameters["fields"] = "access_token"; 
      var result = (IDictionary<string, object>)fb.Get(pageId, parameters); 

      var pageAccessToken = (string)result["access_token"]; 

      return pageAccessToken; 
     } 
     catch (FacebookApiException ex) 
     { 
     } 
     return null; 
    } 

現在就像我說的,如果我使用圖表瀏覽器中的訪問令牌,代碼工作正常。 然後柱到圖形API

var facebookClient = new FacebookClient(pageAccessToken); 
      var result = (IDictionary<string, object>)facebookClient.Post("me/feed", new Dictionary<string, object> 
{{"message",postMessage},                    {"picture", csLogo}, 
{"link", LinkHelper.AssignmentUrl(wrapper.Assignment)}}); 

回答

0

確保用戶訪問令牌manage_pages擴展權限作出。

然後請求me/accounts來獲取頁面訪問令牌。

然後使用頁面發佈到{pageid}/feed訪問令牌。

相關問題