2011/07/06

Facebook API with iPhone app

最近在研究怎麼使用facebook API,看了蠻多的參考資料:
Sorry 還蠻雜的,沒有太多時間做整理 ><


簡單來說,有兩件事情要做
  • 學習使用 Facebook iOS SDK
  • API有哪些?要怎麼使用?
Facebook API走HTTP協定,資料交換格式為JSON,採用OAuth方式來認證。
Facebook iOS SDK其實就是幫你搞定這些事情,預設會開啓Safari或fb外掛來display login畫面,其中還包含了permission確認,如果上述兩項無法使用,則改用SDK裡面自己刻的dialog。使用者login後會拿到auth token,之後access API都要靠它。Request包成callback形式,接到response再做對應的事情。資料格式也幫你parse成NSData格式,存取相當方便。

SDK下載按這裡

稍微整理SDK使用方式 (不同時期的SDK使用方法不太一樣,下面敘述的是2011/7的版本)



  • 專案設定
  1. 把FBConnect source複製到自己的專案
  2. 新增key value到*.plist,這部份比較難行容,請直接參考下圖
  • 程式碼
  1. import "FBConnect/FBConnect.h"
  2. 宣告Facebook物件,參數為AppID
  3. Facebook *facebook = [[Facebook alloc] initWithAppId:APP_ID];
    
  4. Call authorize()來作認證的事情,參數為想存取的permission,程式執行到這裡login dialog會跑出來
  5. NSArray *permissions = [[NSArray arrayWithObjects: @"read_stream", @"read_friendlists", nil] retain];
    [facebook authorize:permissions delegate:self];
    
  6. 在AppDelegate.m需加入Facebook::handleOpenURL,這樣使用者在dialog輸入完以後才會返回原本的app
  7. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        NSLog(@"handle open url");
        return [viewController.facebook handleOpenURL:url]; 
    }
    
  8. 準備fbDidLogin() function,上一步返回時若login成功就會call此function,到此為止已經拿到access token了
  9. - (void)fbDidLogin {
        NSLog(@"login success");
        NSLog(@"token=[%@]\nexpire=[%@]", facebook.accessToken, facebook.expirationDate);
    }
    
  • 發送request & 接收response
    1. 例如想要拿使用者基本資料 (me指的是current user,詳細請參考GraphAPI)
    2. [facebook requestWithGraphPath:@"me" andDelegate:self];
      
    3. 當拿到結果的時候request: didLoad()會被call,在此我們直接把接收到的資料列舉出來,return的data type會因call的API而有所不同
    4. - (void)request:(FBRequest *)request didLoad:(id)result {
          /* Enum all */
          for (id key in result) {
              id value = [result objectForKey:key];
              NSLog(@"%@: %@", key, value);
          }
      }
      


沒有留言:

張貼留言