iOS FBSDKが期限切れのトークンを返送しているときのケースの処理方法がわかりません。私のアプリでは、私は 'ログイン'ボタンをクリックすると、次のメソッドを呼び出しています。FBSDKトークンの期限切れのケースを処理する方法は?
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"public_profile", @"email", @"user_photos", @"user_birthday"]
fromViewController:nil
handler: etc.... ]
これは、その後FBSDKAccessTokenDidChangeNotificationはトリガ、次のように私は、このメソッドをhandelingよ:
- (void)fbAccessTokenDidChange:(NSNotification *)notification
{
if ([notification.name isEqualToString:FBSDKAccessTokenDidChangeNotification]) {
FBSDKAccessToken* oldToken = [notification.userInfo valueForKey: FBSDKAccessTokenChangeOldKey];
FBSDKAccessToken* newToken = [notification.userInfo valueForKey: FBSDKAccessTokenChangeNewKey];
NSLog(@"FB access token did change notification\nOLD token:\t%@\nNEW token:\t%@", oldToken.tokenString, newToken.tokenString);
// initial token setup when user is logged in
if (newToken != nil && oldToken == nil)
{
NSDate *nowDate = [NSDate date];
NSDate *fbExpirationDate = [FBSDKAccessToken currentAccessToken].expirationDate;
if ([fbExpirationDate compare:nowDate] != NSOrderedDescending)
{
NSLog(@"FB token: expired");
if ([FBSDKAccessToken currentAccessToken])
{
[[FBSDKLoginManager new] logOut];
[[NSNotificationCenter defaultCenter] postNotificationName:@"fbTokenExpired" object:nil];
}
return;
}
[self storeFacebookToken];
}
else if (newToken && oldToken && ![oldToken.tokenString isEqualToString:newToken.tokenString])
{
NSLog(@"FB access token string did change");
[self storeFacebookToken];
}
}
}
私はトークンの有効期限が切れていることをcaaseのために何が必要ですか? ??現在のトークンをnilに設定する[[FBSDKLoginManager new] logOut]を呼び出しています。しかし、ユーザーを再度ログインボタン操作にリダイレクトすると、同じウィンドウが表示され、「許可」を押すようユーザーに求めます。それは私の理解から新しいトークンを作るだろう、自分のパスワードと電子メールを入力するようにユーザーに求めていないのですか?ポイントはどこにありますか?今のところユーザーはログインしないループに入るだけです...
何か助けがありがたいです!デバイスでのあなたのFacebookアプリでのthnx
Thnxしかし、これは良い解決策ではありません。これをユーザーにどのように提示すればよいですか?私は何とかこのプログラムで、バックグラウンドで、ユーザーにfbアプリとログアウトに行くように指示しないで行う必要があります... – user1974507