2012-03-26 9 views
1

Facebook C#SDKはいつか使用していますが、本当に古いバージョンがあり、まだREST APIを使用しています(私は思っています)。私は自分のFacebookページに投稿するためにAPIを使用することに懸念しています(私たちの機関のFacebookページにコンテンツを投稿するWCMSプラグインがあります)。私はSDKの最新バージョンでこのセットアップを行う方法に関する良いチュートリアルを誰かが知っていたのでしょうか?私はまた、offline_accessがなくなると、これがどのように働くのかと心配しています。だから、それについての考えも高く評価されます。 60日ごとに手動で新しいアクセストークンを取得する必要はありません。これは、私が投稿しようとしているページと同じFBアカウントに、投稿を行うために使用しているアプリがあるので、やや不必要なようです。Facebook C#SDKを使用してページに投稿

+0

しばしば見過ごさ事実は、ユーザーがオフラインのときに投稿するoffline_accessの許可を必要としないことです。アプリアクセストークンを使用していて、publish_stream権限を持っている場合、ユーザーがオフラインになったときに投稿できます。あなたは他のことをすることができません。 –

答えて

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

ありがとう、ありがとう、ありがとう!私は全面的に探していただけで、私にとっては有効な答えです。ニース! –

+0

FacebookClientは何ですか? –

関連する問題