Facebookにログインし、自分と友達の詳細を取得し、Facebookからログアウトする簡単なiOSアプリを作成しています。
現在、Facebook からのログインと自分と友達の詳細の取得は正常に機能していますが、Facebook から完全にログアウトすることはできません。ログアウトしてから再度ログインすると、(Web の) Facebook の認証ログイン画面ではなく、認証画面が表示されます。
以下は私のコードです - ログインから自分と友達の詳細を取得し、Facebookからログアウトするまで、私が実行した手順に何か問題があるかどうかを確認してください
1) 以下の方法で Facebook にログイン
- (void)openSession
{
if(FBSession.activeSession.isOpen)
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:NO
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error)
{
[self sessionStateChanged:session state:state error:error];
}];
}
else
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error)
{
[self sessionStateChanged:session state:state error:error];
}];
}
}
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
{
// Connection is Open
lblStatus.text = @"FBSessionStateOpen";
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
{
[FBSession.activeSession closeAndClearTokenInformation];
// Connection is Closed / Login Failed
lblStatus.text = @"FBSessionStateClosed";
}
break;
default:
break;
}
}
2) 以下のメソッドを使用して、自己の詳細と友人の詳細を取得する
if (FBSession.activeSession.isOpen)
{
[[FBRequest requestForMe] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error) {
if (!error) {
self.lblSelfDetails.text = user.name;
self.profilePicture.profileID = user.id;
}
}];
}
FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,birthday"];
[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
NSArray *data = [result objectForKey:@"data"];
for (FBGraphObject<FBGraphUser> *friend in data)
{
NSLog(@"%@:%@", [friend name],[friend birthday]);
}
}];
3) 以下の方法でログアウト
- (IBAction)logout:(id)sender
{
[FBSession.activeSession closeAndClearTokenInformation];
}