2013-11-02 77 views
3

在iOS上使用Facebook並非新手,但我的第一次嘗試是使用iOS 5和iPhone 3GS。使用Facebook的Facebook SDK(https://developers.facebook.com/docs/ios/)是唯一的出路。iOS 7需要Facebook SDK嗎?

快進到iOS 7(和實際的iOS 6),和蘋果提供SocialKit,賬戶SDK等,並有大量的在線教程,做這樣的事情的:

if ([self userHasAccessToFacebook]) { 

    ACAccountStore* accountStore = [[ACAccountStore alloc]init]; 

    ACAccountType* facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

    NSDictionary* options = @{ACFacebookAppIdKey:  FACEBOOK_APP_KEY, 
           ACFacebookPermissionsKey: @[@"publish_stream"], 
           ACFacebookAudienceKey:  ACFacebookAudienceEveryone}; 

    [accountStore 
    requestAccessToAccountsWithType:facebookAccountType 
    options:options 
    completion:^(BOOL granted, NSError *error) { 
     if (granted) { 

這個工作如果我已經在其他地方(在這種情況下,我已經通過Android設備上的登錄對話框)授權了我的Facebook應用程序,但是在撤銷訪問(當然是測試)後,我得到

message =「Error驗證訪問令牌:會話不匹配 當前存儲的會話。Th可能是因爲用戶在會話創建之後更改了密碼 ,或者由於安全原因Facebook更改了會話 。

當我試圖分享到Facebook。這是甚至requestAccessToAccountsWithType表明訪問被授予。

我假設在這一點上我需要登錄並重新授權我的應用程序,但是迄今爲止我看到的任何教程都沒有給出有關如何執行此操作的任何指示。

在一天結束時,問題是雙重的:我是否需要使用Facebook上的Facebook SDK來執行我需要執行的所有操作,如果我不需要,我如何獲得該應用程序只使用SocialKit重新授權?

+1

如果您只想發佈到用戶時間表,並且您不需要在iOS6下面支持,那麼您就不需要SDK。關於訪問失敗,現在通過設置應用程序進行控制,所以如果出現錯誤,您需要告訴用戶他們需要允許從那裏訪問(我想!) – Flexicoder

回答

1

基本上,你可以與Facebook集成,而不使用SDK,只要用戶已經登錄iOS中的設置, 否則,你會得到一個錯誤的結果

的對象,你應該使用是SLComposer。 (您可以通過網頁找到許多示例和教程)。

如果它滿足你的話,沒關係,但我建議使用Facebook sdk,使用原生Facebook應用程序,這樣你就不會失去那些沒有通過iOS設置登錄他們的Facebook帳戶的人。 您將可以嘗試使用本機應用程序集成。

不要猶豫,尋求進一步的幫助。