5

3.x にアップグレードして、iOS 6 / iPhone 5 のユーザーが可能な限り合理化された FB エクスペリエンスを利用できるようにしたいと考えています。 3.1 SDK で 2.x API を引き続き使用しますか?

私たちが依存している主要なメソッドとリクエストのいくつかは 次のとおりです。 .com/me?fields=id,email,first_name&access_token="など 3.1 のサンプル プロジェクトの一部の検索では、これらすべてが置き換えられたように見えますが、名前の変更だけではないと思います。

この3.0 から 3.1 へのアップグレードの 2.x から 3.x へのバージョンは見つかりませんでした 。見落としていた場合は、お知らせください。

以前に最近 3.0 にアップグレードしようとしたとき、減価償却された API を使用しようとしたときに重大な破損 (SBJson ヘッダーの重複、FB ヘッダーの解決なし) に遭遇しました。 2回目、その後クラッシュ。また、3.x の ARC を無効にすると問題が発生する可能性があることを示す投稿に出くわしました (C++ があるため使用できません)。

私はまだ 2.x から 3.1 に着手していません。おそらくそれはよりスムーズに進むでしょうが、2回目の長い打席の前に私の前に行った人から洞察を得たいと思います-どうもありがとう.

4

2 に答える 2

9

最近、アプリのこのアップグレードを行いました。私がこれを行った理由は、iOS 6 のスムーズな流れと、Facebook の将来のサポートが最終的に古い SDK を非推奨にするためでした。大きな変更点は、ログイン フローとグラフを開く呼び出しです。このダイアログは、ウォールへの投稿を要求し、非推奨のヘッダーをまだピギーバックしています。関心のあるメソッドについては、次のように置き換えられます。

[ad.facebook Authorize:perms]

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 はキャッシュを実装し、必要に応じてトークンを拡張します。loginUI が表示されないはずなのに、セッション状態が FBSessionStateCreatedTokenLoaded であった場合、最初のコード スニピットに表示された場合でも、セッションを開きたいと考えています。セッションが FBSessionStateCreatedTokenLoaded 状態の場合、次のことを意味します。

キャッシュされたトークンが読み込まれたことを示す 2 つの初期セッション状態の 1 つ。セッションがこの状態にある場合、open* を呼び出すと、UX やアプリの切り替えなしでセッションが開かれます。

詳細については、SessionLoginSample を確認してください。

isSessionValid - これが現在

FBSession.activeSession.isOpen

dialog:@"feed" andParams:params andDelegate:delegate - これは同じですが、使用する前に次のように 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/を参照してください

于 2012-10-08T20:26:09.137 に答える
3

私も同じことをしようとしていますが、Facebook のドキュメントで「2.0 から 3.1 へのアップグレード」という記事を見つけました。

https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-2.0-to-3.1/

于 2013-02-07T16:14:48.083 に答える