Facebook SDK (iOS) を使用してプロジェクトを実装しています。そして、奇妙な現象に遭遇しました...
最初に、Facebook オブジェクトの初期化コードを配置します。
self.facebook = [[Facebook alloc] initWithAppId:appID andDelegate:self];
そして、トークンが利用可能かどうかを確認し、利用できない場合は、ログイン ビューに移動します...
次に、アプリのデリゲートに Facebook メソッドへのログインをトリガーするボタンを追加し、その中で承認メソッドのみを呼び出しました
- (void)LoginToFacebook
{
NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",nil];
[self.facebook authorize:permissions];
}
これでトランジションを処理します
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
// attempt to extract a token from the url
return [self.facebook handleOpenURL:url];
}
私が遭遇する問題は、シミュレーターをリセットしてプロジェクトを実行すると、最初はすべて問題なく、ログインページが表示されることです。ログイン ボタンを押すと、最初にログイン (NORMAL) を求められ、次にアプリを承認しました。ただし、[OK]ボタンを押すと(以前にアプリを承認したと仮定します)、プログラムで fbDidLogin が呼び出され、さらに別のサファリウィンドウがポップアップし、再度承認を求めています...
私は解決策を探していましたが、認証メソッドとフィード ダイアログを同じ場所に配置したくないというこの質問を見つけました。それでも、私のコードではそのようなことはしませんでした (アプリ リクエスト ダイアログ コードはありましたが、それらが同じ場所に配置されていないことは確かです)。
さらに、OK ボタンを 2 回押した後、エラー コード 400 のログイン ページに移動し、ユーザーの友達を取得する別のボタンをクリックすると、成功しました。
奇妙な現象は、ユーザーの友達を取得し、ログアウトして再度ログインした場合、同じコードで認証用のサファリ ウィンドウが 1 つしか表示されないということです.....
だから私はかなり混乱しているので、誰かが私を助けることができますか?
編集
アクセス許可を含めないとアプリは正常に動作することがわかりましたが、含めても、最初のログイン時にSafariが2回ポップアップするという問題がまだあります...