これは重複した質問のように見えることはわかっていますが、これに関連するスタックオーバーフローに関するすべての質問を調べましたが、それでも次のエラーが発生します。
Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed.
(com.facebook.sdk error 2.)" UserInfo=0x1ecbf8e0
{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason}
これがNSErrorのNSLog全体です。
レターの認証に関するチュートリアルに従いました。
- developers.facebook.comで、アプリケーションをネイティブiOSアプリにし、バンドルIDを入力しました
- 私のinfo.plistには、URLタイプ>アイテム0>URLスキーム>アイテム0>fb123456およびFacebookAppID= 123456、キーを含めました。
次のコードを使用して認証しようとしています。
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
権限はnilに設定されています。
アプリデリゲートにも次のセットがあります
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[FBSession.activeSession handleDidBecomeActive];
}
- (void)applicationWillTerminate:(UIApplication *)application
{
[FBSession.activeSession close];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [FBSession.activeSession handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [FBSession.activeSession handleOpenURL:url];
}
私が気づいたことの1つは、ボタンを離した直後にエラーメッセージが画面に表示され、電話を機内モードにしたところ、速度は同じだったということです。コマンドは電話を離れて、そもそもFacebookサーバー..Facebookの呼び出しの少し前にgoogleapiにアクセスするので、私は間違いなくネットワーク接続を持っています。
編集:
以下の非推奨の方法を使用する場合
[FBSession openActiveSessionWithPermissions:nil allowLoginUI:YES completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
Facebookで認証できます。
返されるセッションは
<FBSession: 0x20038450, state: FBSessionStateOpen, loginHandler: 0x2006ba90, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1ed4ce30>, expirationDate: 2013-04-08 16:25:19 +0000, refreshDate: 2013-02-07 16:25:19 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)>
更新された3.1.1メソッドで失敗した試行からのこのセッションと比較
<FBSession: 0x1e8970b0, state: FBSessionStateClosedLoginFailed, loginHandler: 0x0, appID: 3895930xxxxxxxx, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x1d5853b0>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)>
ログインに成功すると、欠落しているloginHandlerオブジェクトが作成されると想定しています。
これにより、ログインしたトークンを使用してアプリの残りの部分を開発し続けることができますが、アプリをライブで送信することはできません。なぜこれが起こっているのか/何がこれを引き起こしているのか誰かが知っていますか?