2012-08-29 6 views
0

많은 것을 검색했으며 StackOverflow에서도 동일한 질문을 볼 수 있지만 답변을 얻지 못했습니다.Google+와 Facebook의 api/rss 피드가 twitter API 피드처럼 제공

나는 그/그녀의 계정 아래서 그 사람이 올린 메시지를 사용자 (google + 및 facebook)로 보내야하며 더 나은 형식/디자인으로 사용자 게시물을 표시 할 모바일 앱에 xml 응답으로 제공해야합니다. 프로필 ID/사용자 이름을 사용하여 google +/facebook에서 게시물을 가져와야합니다.

예 : 트위터에서처럼 내가 할 수있는 라이브러리 또는 내가 그것을 얻을 수있는 특별한 방법이 있나요

https://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&screen_name=screenname&count=2

에서 상태를 확인 할 수 있습니까?

미리 감사드립니다.

답변

1

내가 사용한 소셜 미디어 API는 두 가지뿐이므로 Facebook 및 Twitter와 만 이야기 할 수 있습니다.

두 API는 모두 RESTful 서비스입니다. 트위터와 페이스 북의 경우, RESTful 서비스를 통해 데이터를 가져올 애플리케이션에 대해 OAuth 토큰을 얻기 위해 원근감 플랫폼에서 애플리케이션을 만들어야한다.

FaceBook의 경우 Graph API explorer을 개발 용으로 사용할 수 있습니다. 이를 통해 FaceBook 플랫폼에 응용 프로그램을 만들지 않고도 개발할 수 있습니다.

FaceBook과 Twitter에는 모두 이러한 웹 서비스에 다양한 언어로 액세스 할 수있는 커뮤니티 중심 프로젝트가 있습니다. Android 용으로 이것을 수행하고 있기 때문에이 데이터를 Java로 가져 오기위한 프로그램을 원한다고 가정합니다.

RestFB는 핵심 개념을 시작할 수있는 좋은 장소입니다, 좋은 자바 트위터 라이브러리 FaceBook를 들어

는 자바 페이스 북 라이브러리

FacebookClient facebookClient = new DefaultFacebookClient(authToken); 
User facebookUser = facebookClient.fetchObject("me", User.class); 

Twitter4j 내 추천합니다. Twitter에 대한 자세한 정보는 overview documentation

+0

구문 분석과 트위터 상태를 사용하기에 충분한 라이브러리를 가지고 있지만 FB와/응용 프로그램에 목록 피드를 얻기 위해 (심지어는 너무 어려워 보인다), 좀 더 FB에 디그됩니다 + 구글. – Elamurugan

0

Google+ 용 활동 API를 사용할 수 있습니다. 현재 공개 게시물로 제한되어 있지만 시작하기에 충분해야합니다. 프로필 ID는 사용자 프로필에서 가져옵니다. 검색 API를 포함하여이 콘텐츠를 얻을 수있는 다른 방법이 있습니다.

다양한 언어의 설명서 및 간단한 예는 Google 플러스 페이지 (https://developers.google.com/+/api/latest/activities)에서 찾을 수 있으며 다음 자바 스크립트 예제는 작동 방식 :

// globals used for auth, showing debugging 
var debug = true; 
var key = "your api key from https://code.google.com/apis/console"; 


function handleRequestIssue(request){ 
    // For now, just show the error 
    console.log("Error, status:" + request.status + "/response:" + request.responseText); 
} 

function performXHR(URL){ 
    var objReturn = "";  
    var request = new XMLHttpRequest(); 
    request.open('GET', URL, false); 
    request.send(); // because of "false" above, will block until the request is done 
        // and status is available. Not recommended, however it works for simple cases. 

    if (request.status === 200) { 
    if (debug) console.log(request.responseText); 
    var objReturn = jQuery.parseJSON(request.responseText).items; 

    if (debug){ 
     for (value in objReturn){ 
     console.log(value); 
     } 
    } 
    }else{ 
    handleRequestIssue(request); 
    } 
    return objReturn; 
} 

// Gets the activities for a profile 
function getActivities(profileID){ 
    var activities = null;  
    var URL  = "https://www.googleapis.com/plus/v1/people/" + profileID + "/activities/public?alt=json&key=" + key; 
    activities  = performXHR(URL); 
    console.log(activities.length); 
    return activities; 
} 

이 시점에서 디버거의 활동을 볼 수 있습니다. 당신은 항상 div 또는 뭔가 내부 HTML로 콘텐츠를 렌더링 할 수 있습니다.

function renderActsComments(activities, identifier, filter){ 
    var renderMe = ""; 
    console.log("activities retrieved: " + activities.length); 

    for (var i=0; i < activities.length; i++) { 
     var render = true; 
     console.log("trying to do something with an activity: " + i); 
     var activity = activities[i]; 
     if (filter != null && filter.length > 0){ 
     if (activity.crosspostSource.indexOf(filter) == -1){ 
      render = false; 
     } 
     } 


     if (render == true){ 
     renderMe += "<br/><div class=\"article\"><p>" + activity.title + "</p>"; 
     console.log(activity.id); 

     // get comments 
     var comments = getCommentsForActivity(activity.id); 
     var left = true; 
     for (var j=0; j<comments.length; j++){ 
      if (left){ 
      left = false; 
      renderMe += "<br/><p class=\"speech\">" + comments[j].object.content + "</p>"; 
      renderMe += "<a href=\"" + comments[j].actor.url + "\">" + comments[j].actor.displayName + "</a>"; 
      renderMe += "<a href=\"" + comments[j].actor.image.url.replace(/\?.*/, "") + "\">"; 
      renderMe += " <img border=0 src=\"" + comments[j].actor.image.url + "\"/></a>"; 
      renderMe += "</p>"; 
      }else{ 
      renderMe += "<br/><p class=\"speechAlt\">" + comments[j].object.content + "</p>"; 
      left = true; 
      renderMe += "<p class=\"profileAlt\">"; 
      renderMe += "<a href=\"" + comments[j].actor.image.url.replace(/\?.*/, "") + "\">"; 
      renderMe += "<img border=0 src=\"" + comments[j].actor.image.url + "\"/></a>"; 
      renderMe += "<a href=\"" + comments[j].actor.url + "\"> " + comments[j].actor.displayName + "</a>"; 
      renderMe += "</p>"; 
      } 
     } 
     renderMe += "</div>"; 
     } 
    } 
    console.log("I'm done"); 

    document.getElementById(identifier).innerHTML = renderMe; 
    return renderMe; 
}