Facebook iOS 統合を 2.x SDK から 3.x SDK にアップグレードすると、以前にログインしていたユーザーは自動的にログアウトされます。 SDK。
ワンタイム認証の移行として、以前手動で保存していたアクセス トークンと有効期限を使用して 3.x SDK を強制的に認証する方法はありますか?
前もって感謝します!
Facebook iOS 統合を 2.x SDK から 3.x SDK にアップグレードすると、以前にログインしていたユーザーは自動的にログアウトされます。 SDK。
ワンタイム認証の移行として、以前手動で保存していたアクセス トークンと有効期限を使用して 3.x SDK を強制的に認証する方法はありますか?
前もって感謝します!
最後にそれを理解しました。解決策には、それらが提供するFBSessionTokenCachingStrategyオブジェクト、特にFBSessionManualTokenCachingStrategyを使用することが含まれます。
if (isUserUpgrading) {
FBSessionTokenCachingStrategy *strategy = [[[FBSessionManualTokenCachingStrategy alloc] initWithUserDefaultTokenInformationKeyName:nil] autorelease];
strategy.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"FBSessionToken"]; // use your own UserDefaults key
strategy.expirationDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"FBSessionExpiration"]; // use your own UserDefaults key
FBSession *session = [[[FBSession alloc] initWithAppID:@"MY_APP_ID" // use your own appId
permissions:nil
urlSchemeSuffix:nil
tokenCacheStrategy:strategy] autorelease];
[FBSession setActiveSession:session];
} else {
[FBSession openActiveSessionWithReadPermissions:...]; // normal authentication
}
Facebook SDK 3.1.1 の場合、FBSessionTokenCachingStrategy のサブクラスであり、fetchTokenInformation メソッドを次のように定義する新しいクラス FBSessionManualTokenCachingStrategy を作成する必要がありました。
- (NSDictionary*)fetchTokenInformation; { return [NSDictionary dictionaryWithObjectsAndKeys: self.accessToken, FBTokenInformationTokenKey, self.expirationDate, FBTokenInformationExpirationDateKey, nil]; }