Saturday, October 31, 2009

c( ̄ܫ ̄)a 之Facebook開發手札 – Open Stream API操作筆記

個人覺得Facebook Platform稍微有點困難的地方在於起步的時候, 因為要先理解整個App平台的架構包含一些名詞與App的各種驗證機制, 一但跨過了這些階段之後, API的操作其實就相當的直覺了, 畢竟我認定API的定義就是應該我代參數給你, 你就乖乖的回我該有的資料(Facebook API回傳資料是JSON), API有問題就發信去轟炸Facebook的龐大工程師群們.
Open Stream API是Facebook近期釋放出的API, 主要功能就是讓應用程式開發者可以在任何地方包含第三方網站, 行動裝置, 桌面環境去讀取已登入使用者Wall上的訊息流(Stream)去進行混搭的應用.




要讀取Facebook平台上使用者的Stream最大的前提在於, 使用者必須允許你的應用程式這樣做. 也就是說使用者必須允許你應用程式的"Entended Permission"中的"read_stream", 若要讓應用程式可以發佈Stream到使用者的Wall上的話, 使用者必須額外允許"publish_stream"的"擴展權限"



附上一個範例網站供參考


FB.Connect.showPermissionDialog(permission, function( granted_permission ){
  if( !granted_permission ){
   alert('您不允許這些"延伸權限"');
  } else {
   alert( granted_permission );
  }
  return false;
 });



FB.Connect.showPermissionDialog

message : 用逗號分隔開來的字串, 代表應用程式想要使用者進行"Allow"的權限

例如 : publish_stream,read_stream,sms就代表要同時向使用者請求發佈Stream(publish_stream), 讀取Stream(read_stream)以及發送email(email)的權限.

第二個參數為Callback function, 當使用者設定權限完成後會回傳一個字串, 字串內容就是使用者已經允許(Allow)過的"Extended Permission"

反之若是設定失敗或是請求的擴展權限全都被使用者否決, 那回傳值就會是null

一但完成了必要的權限請求且使用者也Allow了之後,就可以使用FB.Facebook.apiClient.stream_get來取得使用者Wall之上的Streams了



$('#getStreamBtn').bind('click',function(){
 var streamList = $('#streamList');
 streamList.html('');
 FB.Facebook.apiClient.stream_get( '','','',30,'',function(r,e){
  for( i = 0, j = r.posts.length; i< j; i++ ){
   
   if( !r.posts[i].message ){
    r.posts[i].message = '非文字型訊息';
   }
   
   var item = '';
   item += '
'; item += r.posts[i].message; item += '
'; $(item).appendTo(streamList); } }); });

No comments:

Post a Comment