2

これは重複した質問のように見えることはわかっていますが、これに関連するスタックオーバーフローに関するすべての質問を調べましたが、それでも次のエラーが発生します。

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オブジェクトが作成されると想定しています。

これにより、ログインしたトークンを使用してアプリの残りの部分を開発し続けることができますが、アプリをライブで送信することはできません。なぜこれが起こっているのか/何がこれを引き起こしているのか誰かが知っていますか?

4

2 に答える 2

14

2つのインスタンスで同じエラーが発生しました。

  1. アプリがFacebookアカウントを使用できるようにするために、iPhoneの[設定]->[Facebook]->[YourAppName]でスイッチがオンになっていない場合。この場合、アプリのスイッチをオンにするようにユーザーに求めるアラートを表示しています。

  2. アプリのバンドル識別子が、アプリのFacebookアプリ設定ページで指定したバンドル識別子と一致しない場合。

インターネットに接続していなくてもエラーが発生するので、ケース1だと思います。

于 2013-02-10T15:48:16.933 に答える
0

同様の問題がありました。fbユーザーを設定から切り替えたときにエラーが発生します。デバイスでFBアカウントを切り替えると、iOS6でFacebook認証が失敗するこれで問題が解決しました

于 2013-04-05T17:23:19.760 に答える