2011-07-01 2 views
0

페이스 북 C# SDK를 사용하여 회사 페이지 벽에 게시물을 게시하려고합니다. 배치 작업에서이 작업을 수행해야하므로 특정 사용자가 상호 작용하는 웹 앱이 아닙니다. 나는 내 자신의 페이스 북 ID로 설정 페이스 북 응용 프로그램을, 나는 내 계정, share_item, offline_access 및 manage_pages 권한을 publish_stream 부여했다. (나는이 사용 권한이 내 Facebook 설정 페이지에서 앱에 부여되었음을 확인할 수 있습니다.) 그리고 내가 게시하려고하는 회사 페이지는 내가 직접 만든 페이지이므로 완전한 액세스 권한을 가져야합니다.C# SDK를 사용하여 오프라인 앱에서 회사 Facebook 페이지에 어떻게 게시 할 수 있습니까?

내가, 액세스 토큰을 받고 함께 게시 할 메시지를 넣어,이 응용 프로그램의 응용 프로그램 ID 및 암호를 사용하여 페이스 북에 인증하고, 다음을 게시하려고합니다. 나는 다음과 같은 예외가 얻을 : 나는이 주제에 대한 몇 가지 변화를 시도했습니다

Facebook.FacebookOAuthException was unhandled by user code 
Message=(OAuthException) (#200) The user hasn't authorized the application to perform this action 

을,하지만 난 내가 잘못 뭘하는지 알아낼 수 없습니다. 여기 내 코드의 비트입니다 :

 var client = new FacebookClient("APP ID", "SECRET"); 
     _log.DebugFormat("access token={0}", client.AccessToken); 
     dynamic parameters = new ExpandoObject(); 
     parameters.message = "testing 123"; 
     /* fill in other parameters */ 
     dynamic result = client.Post(FanPageId+"/feed", parameters); 
     /* here's where I get the exception */ 

내가 데이터에서 페이지 별 액세스 토큰을 당겨에 대한 참조를 본 저 /에서 반환/계정,하지만 난에서 그렇게하는 방법을 알아낼 수 없습니다 Facebook 사용자가 아닌 Facebook 응용 프로그램으로 인증하는 오프라인 응용 프로그램입니다.

업데이트 : 나는 페이스 북에 연결 코드의이 비트를 사용하여이 방법의 일부를 입수했습니다

 var client = new FacebookClient("NON-EXPIRING OAUTH TOKEN"); 

을 ...은 "비 만료의 OAuth 토큰"은 하나입니다 문제의 앱을 Facebook의 개발자 앱에 표시합니다.

은 여전히 ​​지금은 페이지 자체에서 오는 표시 게시물을 얻는 방법을 파악하는 추가 단계를 이동해야합니다,하지만 내 자신의 ID로 게시됩니다.

+0

대부분의 아마 먼저 자신부터 manage_pages 권한을 요청해야합니다 다음 페이지에 뭔가를 할 수 있습니다. – Ashfame

답변

0

지금이 알아 냈어요, 그래서 난 내 자신의 질문에 대답하는거야. 이 방법을 사용하면 사용자가 개입하지 않고 팬 페이지의 '이름'아래에 팬 페이지에 게시 할 수있었습니다 (Facebook.Web.dll을 필요로하지 않는) Facebook.dll만을 사용했습니다. 누군가가이 일을 더 빨리 또는 더 쉬운 방법이있는 경우

// init with a non-expiring access token for an app that can manage the fan page 
var client = new FacebookClient(fbAppOaToken); 

// get accounts, using a Facebook ID for a user who has admin rights to the fan pge 
dynamic accts = client.Get(string.Format("/{0}/accounts", fbAppAdminUser)); 

// find the access token for the fan page 
string page_access_token = null; 
foreach (var acct in accts.data) 
{ 
    if (acct.id == fbFanPageId) 
    { 
     page_access_token = acct.access_token; 
     break; 
    } 
} 

// fill in parameters for the message to post 
dynamic parameters = new ExpandoObject(); 
parameters.message = "testing 123"; 

// and include the access token as retrieved above 
parameters.access_token = page_access_token; 

dynamic result = client.Post(fbFanPageId + "/feed", parameters); 

알려 주시기 바랍니다. 이 문제를 해결하기에 충분한 퍼즐 조각을 함께 넣기 전까지는 실제로이 문제를 발견했습니다. 감사.

+0

예를 들어, 나는 acct.access_token에서 어떤 가치도 얻지 못한다. 토큰 문자열을 수동으로 만들면 client.Post를 오류없이 실행할 수 있지만 페이지에서 해당 게시물을 찾을 수 없습니다. 내가 똑같은 메시지를 올리려고 할 때 게시물이 중복되어 허용되지 않는다는 예외가 있습니다. 여기서 언급하지 않은 단계가 빠졌습니까? 이 문제를 겪었습니까? – user158953

+1

좋은 토큰을 사용하여 시작하고 있습니까? (내 예제에서 'fbAppOaToken'.) 나는 그래프 API 탐색기 (https://developers.facebook.com/tools/explorer) 비트와 함께 장난 제안, 당신은 모든 권리를 가지고 있다면 볼 것 가졌어 야지. 해당 토큰을 사용하고/xxx/accounts 호출을 실행하고 게시하려는 페이지를 관리 할 권한이 있는지보십시오. –

관련 문제