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


1 則留言:


  1. Bilgisayar oyunları tutkunları için en yeni ve en popüler oyunlara ulaşmak artık çok kolaydır. İster aksiyon, ister macera veya strateji olsun, her türlü oyunu uygun fiyatlarla bulabilirsiniz. Eğer doğrudan indirme seçenekleri arıyorsanız, pc oyun indir sitesi size yardımcı olacaktır. Bu platform sayesinde zaman kaybetmeden istediğiniz oyunu güvenle indirebilirsiniz. Her zaman güncel ve güvenilir içeriklerle oyun keyfinizi ikiye katlayın.

    回覆刪除