我剛剛爲我的應用做過升級。我之所以這樣做是因爲他們最終會棄用舊的sdk,因此對於iOS 6而言流暢流暢,並且未來對Facebook的支持。最大的變化是登錄流程和開放圖形調用。該對話框要求在您的牆上張貼仍然揹負已棄用的標題。對於這些方法,你有興趣,他們將被替換如下:
[ad.facebook認證:燙髮]
FBSession *session = [[FBSession alloc] initWithAppID:appId
permissions:permissionsArray
urlSchemeSuffix:urlSuffix
tokenCacheStrategy:nil];
[FBSession setActiveSession:session];
if(allowLoginUI == YES)
{
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:handler];
}
else if(session.state == FBSessionStateCreatedTokenLoaded)
{
[session openWithCompletionHandler:^(FBSession *_session, FBSessionState status, NSError *error) {
[self _sessionStateChanged:_session state:status error:error];
}];
}
[session release];
看到額外的實施說明,登錄
https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/
shouldExtendAccessToken,extendAccessTokenIfNeeded, - 這些現在消失了,facebook SDK實現支持緩存並在需要時擴展令牌。如果你看到我的第一個代碼snippit,如果loginUI不應該顯示,但會話狀態是在FBSessionStateCreatedTokenLoaded中,你仍然想打開會話。當你的會話的狀態FBSessionStateCreatedTokenLoaded這意味着:
一個指示緩存令牌是 加載兩個初始會話狀態的;當會話處於此狀態下,調用open *將導致在打開的會話 ,不UX或APP切換
結賬SessionLoginSample以獲得更多信息。
isSessionValid - 這是現在
FBSession.activeSession.isOpen
對話框:@ 「飼料」 andParams:PARAMS andDelegate:委託 - 這仍然是相同的,但是你必須之前創建這樣Facebook的實例使用它:
Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];
facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;
//... normal code to setup a feed post
[facebook dialog:@"feed" andParams:params andDelegate:self];
[facebook release];
看到https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/更多信息
「https://graph.facebook.com/me?fields=id,email,first_name & access_token =」, - 圖形調用現在更簡單了。您也可以很容易地將它們一起批處理。
//[facebook requestWithGraphPath:@"me" andDelegate:self]; would become
[FBRequestConnection startForMeWithCompletionHandler:^
(FBRequestConnection *connection, id result, NSError *error) {}];
//[facebook requestWithGraphPath:@"me/albums" andParams:params andHttpMethod:@"POST" andDelegate:self]; would become
[FBRequestConnection startWithGraphPath:@"me/albums"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {}];
看https://developers.facebook.com/docs/howtos/batch-requests-ios-sdk/更多信息
感謝周到和詳細的迴應 - 非常有幫助。當我有機會驗證這些時,我會確保將其標記爲正確的迴應。再次感謝。 – leontx
只是好奇,因爲我必須做這個確切的工作,我想知道你花了多長時間,所以我可以給一個體面的估計。謝謝 –
@JonathanDixon可能不會很長時間2-3小時。新的SDK仍然包含了所有舊的SDK,因此您可以以塊的形式攻擊此項目。只需更換您需要的東西,然後使用舊系統即可。然後慢慢升級。 – odyth