2012-08-29 128 views
0

我搜索了很多,我也可以在StackOverflow中看到和我的一樣的問題,但沒有得到答案。Google+和facebook api/rss feed like twitter api feed

我需要獲取用戶(谷歌+和臉譜)消息,無論他在他/她的帳戶下發布什麼,並將它作爲xml響應到移動應用程序,該應用程序將顯示用戶帖子作爲更好的格式/設計 - 需要使用profile-id /用戶名從google +/facebook獲取帖子。

例如:從Twitter就像我可以看到狀態從

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

是否有任何圖書館或任何特定的途徑,使我能得到它?

在此先感謝。

回答

1

我只能說Facebook和Twitter,因爲它們是我使用的唯一兩個社交媒體API。

這兩個API都是RESTful服務。對於Twitter和Facebook,您將需要在透視平臺上創建應用程序,以便爲將通過RESTful服務獲取數據的應用程序獲取OAuth令牌。

對於FaceBook,您可以利用Graph API explorer進行開發。這使您可以開發而無需在FaceBook平臺上創建應用程序。

FaceBook和Twitter都有社區驅動的項目來訪問各種語言的這些Web服務。既然你正在爲Android做這件事,我想你會希望你的程序用Java獲取這些數據。

RestFB是我的一個Java的FaceBook庫

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

Twitter4j的建議是一個偉大的Java的Twitter庫,

對於FaceBook,核心概念是一個偉大的地方開始。 有關Twitter上的更多信息,請參閱overview documentation

+0

有足夠的庫來解析和使用Twitter的狀態,但不能與FB /谷歌+(即使它太困難似乎),我會更Digg的FB將獲得對應用列表飼料。 – Elamurugan

0

您可以使用Google+的活動API。這目前只限於公開信息,但應該足以讓您入門。配置文件ID來自用戶的配置文件。您還可以通過其他方式獲取此內容,包括搜索API。

來自各種語言的文檔和簡單示例可以在Google plus頁面(https://developers.google.com/+/api/latest/activities)中找到,以下JavaScript示例可以幫助您看到工作原理:

// 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; 
}