2014年12月26日

[iOS]Facebook SDK でログインできなかったときの対処法

Facebook SDK でログインがうまくいかなくてハマったので備忘メモ。

@Facebook SDK に添付される「FriendPickerSample」から、ログイン処理を抜粋して
 それだけを実行してみた
 ※パーミッションはサンプルとは変えています
if (!FBSession.activeSession.isOpen) {
[FBSession openActiveSessionWithReadPermissions:@[@"public_profile"]
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
if (error) {
NSLog(@"ログイン失敗");
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
} else if (session.isOpen) {
NSLog(@"ログイン成功");
}
}];
return;
}


A実行してみた
・Facebookの認証画面が表示されます ※Facebookアプリでサインアウトしていること!
・認証が終わるとページが変わるのですが、エラー画面 orz
 「この機能は現在ご利用いただけません:リクエスト処理中にエラーが発生しました。しばらくしてからもう一度お試しください。」
Screen Shot 2014-12-26 at 7.50.28.png

Bデベロッパー画面を確認する(Status & Review)
Status & Review の Approved Items を確認してみると、ログインに必要な権限(デフォルト)が無効になってました
スクリーンショット 2014-12-26 7.52.50.png

・これを解決するには、画面上の「Do you want to make this app and all its live features available to the general public?」を有効にする必要があるらしい。
 でも、トグルが押せない。。。

Cメールアドレスを登録する(Settings)
・Settings の Contact Email が入力されていると、有効になるらしい!
スクリーンショット 2014-12-26 7.54.51.png

Dアプリを公開にする(Status & Review)
・Status & Review に戻ると、さっきは押せなかったトグルが押せるようになっているので押す
・「公開する?」と聞かれるので、[確認]を押して先に進む
スクリーンショット 2014-12-26 7.56.39.png

・ログインに必要な権限が有効になった!
スクリーンショット 2014-12-26 7.56.55.png

以上で、無事ログインすることができました。


先の記事 にもあるように、
ログインするユーザーがテストユーザー登録(あるいは開発者/管理者)されていなくても
同じエラー画面が出ます。
これで丸一日潰れました orz


参考:
・Facebookへの投稿をFacebook SDKとSocial.frameworkで比較
 http://qiita.com/nofrmm/items/54f6086bf0606f4530ad

・FriendPickerSample
 →Facebook SDK に添付されているサンプルプロジェクトです。
posted by be-style at 08:23| Comment(0) | iOS