2014-05-11 2 views
3

내 웹 사이트 용 페이스 북 페이지와 페이스 북 응용 프로그램을 만들었으므로 이제는 facebook SDK .NET의 도움으로 페이스 북 페이지에 메시지를 게시해야합니다.Facebook SDK로 메시지 게시

이것은 내가 지금까지 무엇을 가지고 있습니다 :

public static bool UploadPost(string message) 
    { 
     dynamic result; 

     //https://developers.facebook.com/tools/explorer/ 
     //https://developers.facebook.com/tools/access_token/ 
     FacebookClient client = new FacebookClient("secret access token"); 


     result = client.Get("oauth/access_token", new 
      { 
       client_id = "[Client ID number]", 
       client_secret = "[Client sercret", 
       grant_type = "client_credentials", 
      }); 

     result = client.Post("[facebook app Id]/feed", new { message = "Test Message from app" }); 
     //result.id; 
     result = client.Get("[facebook app Id]"); 

     return false; 
    } 

이 실행 내가 얻을 : client.Post에 Additional information: (OAuthException - #200) (#200) The user hasn't authorized the application to perform this action. 모든 일이 잘 작동하는 client.Post 행을 제거하면 올바른 데이터가 반입됩니다.

일부 helps on facebook SDK .NET 웹 사이트를 따라했지만 아직 작동하지 않습니다.

이제 주된 문제는 허가 예외가 발생한다는 것입니다. 내 페이스 북 응용 프로그램이 내 웹 사이트에서 페이스 북 페이지로 게시물을 게시 할 수있는 권한을 갖고 있기를 바랬습니다.

+0

Facebook에 신청서를 등록하셨습니까? 자습서 (https://developers.facebook.com/docs/web/tutorials/scrumptious/register-facebook-application/). 사용자가 벽에 올릴 수있는 올바른 유형의 권한을 요청 했습니까? –

답변

0

확장 된 페이지 토큰을 만들어 포스트를 만드는 데 사용하면 모든 것이 잘 작동합니다. 다음을보십시오 : How to get Page Access Token by code?

Im이 간단한 작업은 실행하기가 너무 어려워서 얻는 데 약간의 도움이된다는 사실에 놀랐습니다.

0

[facebook app id]에 게시 하시겠습니까?

"me/feed"에 게시하고 작동하는지 테스트 해 보시기 바랍니다. 또한

가 페이스 북에 게시하면 다음과 같은 작업을해야 :)

+0

나는 저를 시도했다 그러나 그것은 작동하지 않는다. 나는이 앱이 사용자가 아닌 앱으로 게시하고 있다는 사실을 읽었습니다. publish_stream 권한을 얻으려면 어떻게해야합니까? – Banshee

+0

Facebook 용 "공식 .NET SDK"를 사용하는 경우 내 편집을 참조하십시오. –

+0

공식? 이 http://facebooksdk.net/을 사용하여 FacebookClient를 만드는 곳에서 더 많은 라이브러리가 필요합니까? – Banshee

0

일을해야 publish_stream 권한

private async Task Authenticate() 
{ 
    string message = String.Empty; 
    try 
    { 
     session = await App.FacebookSessionClient.LoginAsync("user_about_me,read_stream,publish_actions"); 
     App.AccessToken = session.AccessToken; 
     App.FacebookId = session.FacebookId; 

     Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/Pages/LandingPage.xaml", UriKind.Relative))); 
    } 
    catch (InvalidOperationException e) 
    { 
     message = "Login failed! Exception details: " + e.Message; 
     MessageBox.Show(message); 
    } 
} 

에게 있어야합니다.

var fb = new FacebookClient("access_token"); 

fb.PostCompleted += (o, e) => { 
    if(e.Error == null) { 
     var result = (IDictionary<string, object>)e.GetResultData(); 
     var newPostId = (string)result.id; 
    } 
}; 

var parameters = new Dictionary<string, object>(); 
parameters["message"] = "My first wall post using Facebook SDK for .NET"; 
fb.PostAsync("me/feed", parameters); 

이것은 the documentation에서 직접 가져온 것입니다.

+0

권한을 요청하지 않으셨습니까? 당신이 할 일이 다르다면 내가하는 일은 PostAsync를 일반 우편 대신에 사용하는 것이므로 중요하지 않습니다. – Banshee

+1

나는 문제가 코드라고 생각하지 않는다. 내 웹 사이트에서 게시 할 앱에 뭔가 설정해야한다고 생각한다. 나에게 페이스 북 앱을 사용할 때 절대로 작동하지 않습니다. – Banshee

3

Here은 애플리케이션을 Facebook에 등록하고 애플리케이션 ID를 얻는 단계별 자습서입니다. 권한에 대한 다음

::

private const string ExtendedPermissions = "user_about_me,read_stream,publish_stream"; 

이 권한의 문자열입니다. 페이지에 메시지를 게시 할 수있는 권한을 얻으려면 추가로 전달하십시오. FB 페이지를 게시하지 않으려면 표준 코드를 사용하여 게시하십시오. 건배. 희망이 도움이됩니다.

+0

은 xamarin에서 잘 작동합니다. – vITs

+0

동일한 권한 예외가 작동하지 않습니다. – Banshee

관련 문제