2012-02-16 3 views
2

사용자가 웹 응용 프로그램과 상호 작용하는 동안 특정 페이스 북 계정에 자동 게시를 만들기 위해 내 웹 사이트를 페이스 북과 통합하는 것처럼 가장합니다.페이스 북에서 내 asp.net mvc 3 웹 사이트에서 게시하는 방법

웹 서비스 방식처럼이 작업을 수행하는 방법은 무엇입니까?, 인증 및 페이스 북의 벽에 직접 보내는 정보를 게시하는 URL을 호출?

asp.net mvc3 C#을 사용하고 있습니다. 페이스 북 개발자 툴킷 라이브러리를 찾았습니다. 올바른 시작 방법입니까, 아니면 어떻게해야합니까?

필요한 것은 내 웹 사이트에 새 기사 (뉴스)를 쓸 때만 자동으로 페이스 북 계정에 게시물을 쓰는 것입니다. 그러면 자동으로 fb에 게시됩니다.

나를 시작할 수있는 아이디어가 있습니까?

답변

7

내가했던 어떤 종류의 유사한 경우 사용자가 내 mvc 응용 프로그램에서 "공유"버튼을 클릭하면, 그의 벽에 뭔가를 게시합니다. oauth 대화 상자를 사용하는 문제는 사용자가 로그인하여 응용 프로그램 권한을 수락 할 수 있도록 브라우저를 페이스 북 사이트로 리디렉션한다는 것입니다. 은 "공유"버튼을

는,이 URL로 연결 :

     <a href=""https://www.facebook.com/dialog/oauth?client_id=[YOUR_APP_ID]&redirect_uri=[THE_REDIRECT_PAGE]/&scope=publish_stream""> 
         <img src='@Url.Content("~/Images/facebook_share.png")' alt="Share on Facebook!" style="height:28px" /> 
        </a> 

YOUR_APP_ID 당신의 페이스 북의 응용 프로그램 ID입니다. THE_REDIRECT_PAGE는 사용자가 로그인하고 권한을 수락하면 Facebook에서 자동으로 리디렉션되는 사이트의 공개 페이지입니다. 페이 스북이 리디렉션되면 "code"라는 쿼리 문자열 매개 변수가 추가됩니다. 참고 : 리디렉션 페이지는 "/"로 끝나야하며 문서로 끝날 수 없으며 그렇지 않으면 작동하지 않습니다!

사용자가 요청을 수락하면 액세스 코드라는 다른 코드를 페이스 북에 요청해야합니다.이 코드는 사용자의 벽에 게시하는 데 사용됩니다. 당신이 액세스 토큰이 있으면

 public ActionResult Index(string code) 
    { 
     string fbAuthCode = Request["code"]; //The authorization code. 
     string fbAppId = "XXXXXXX"; //Your fb application id. 
     string fbSecretAppId = "XXXXXXXXXXXXXXXXXXXXX"; //Your fb secret app id, it is found on the fb application configuration page. 
     string redirectUrl = string.Format("[THE_REDIRECT_PAGE]", locationPointId, entryLocationId); //The redirect url. THIS MUST BE THE EXACT SAME REDIRECT URL USED ON THE JAVASCRIPT LINK! 
     string fbUrl = "https://graph.facebook.com/oauth/access_token?client_id=" + fbAppId + "&redirect_uri=" + redirectUrl + "&client_secret=" + fbSecretAppId + "&code=" + fbAuthCode; //Url used to post. 
     string accessToken = string.Empty; 

     try 
     { 
      WebClient client = new WebClient(); 
      using (Stream stream = client.OpenRead(fbUrl)) 
      using (StreamReader reader = new StreamReader(stream)) 
      { 
       accessToken = reader.ReadToEnd().Split('&')[0].Replace("access_token=", string.Empty); 
       reader.Close(); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("An error ocurred while trying to get the fb token in " + fbUrl, ex); 
     } 

, 당신은 사용자의 벽에 게시 할 수 있습니다 :

  string postUrl = "https://graph.facebook.com/me/feed"; 
     string postParameters; 

     postParameters = string.Format("message={0}&picture={1}&name={2}&caption={2}&description={3}&link={4}&access_token={5}", 
              "[Message]", 
              "[PictureUrl]", 
              "[Name]", 
              "[Caption]", 
              "[Link]", 
              accessToken); 

     try 
     { 
      System.Net.WebRequest req = System.Net.WebRequest.Create(postUrl); 

      req.ContentType = "application/x-www-form-urlencoded"; 
      req.Method = "POST"; 

      byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postParameters); 
      req.ContentLength = bytes.Length; 
      using (System.IO.Stream os = req.GetRequestStream()) 
      { 
       os.Write(bytes, 0, bytes.Length); //Push it out there 
       os.Close(); 
       using (WebResponse resp = req.GetResponse()) 
       using (StreamReader sr = new StreamReader(resp.GetResponseStream())) 
       { 
        ViewBag.PostResult = sr.ReadToEnd().Trim(); 
        sr.Close(); 
       } 
       os.Close(); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("An error ocurred while posting data to the user's wall: " + postUrl + "?" + postParameters, ex); 
     } 

     return RedirectToAction(XXXXXXXXXXXxx....); //Then i redirect to another page. 

당신은 내가 던질 예외에 그것을 볼 수 있습니다

이 코드는 리디렉션 페이지에 게시 된 URL (디버깅 목적). 해당 URL을 사용하면 일반적으로 페이스 북 그래프 API 탐색기 또는 Linter로 이동하여 실제 오류를 확인할 수 있습니다.

이것이 정확히 원하는지는 모르겠지만 킥오프를 제공하기를 바랍니다. 오픈 그래프의 페이스 북 문서가 아직 좋지 않기 때문에 나는 며칠 동안 고민했습니다. 우리를 위해 적어도 컬 : https://developers.facebook.com/docs/opengraph/

https://developers.facebook.com/docs/opengraph/tutorial/ 는 희망이 도움을 사용하지 않는. MT.

1

그것은 쉽게 :

1 단계 : //www.facebook.com/dialog/oauth CLIENT_ID = YOUR_APP_ID & redirect_uri로 = YOUR_URL :

이 * https를 "요청에 의해 유효한 페이스 북 토큰을 가져옵니다 & 범위 = "publish_stream 이메일 *"(이 권한의 전체 목록 : https://developers.facebook.com/docs/reference/api/user/)

2 단계 :

사용자 벽

포스트 메시지 :

컬 -F 'access_token은 = ...'\ -F '메시지 = 메시지'\ https://graph.facebook.com/ID_OR_USERNAME/feed

관련 문제