2015-11-18 5 views
7

を我々が使用している:。Facebookで再接続するには、再度このアプリにログインしてください - エラーコード190

パース - 1.8.3 FBSDK * - 4.6.0 ParseUI - 1.1.6 ParseFacebookUtilsV4 - 1.8.3 IOSターゲット - 9.0

ここが私たちの問題です。ユーザーはアプリに正常にログインしています。彼らはFacebook.com->アカウント - >設定に入り、アプリの認証を解除する(完全に削除する)。

ユーザーが再びアプリを起動すると、「このアプリに再度ログインしてFacebookに再接続してください」というFBSDKのダイアログで挨拶されます(オプションはOKとキャンセルです)。

私はグーグルでこれを見て、この問題で他の人たちを見ましたが、彼らの場合は少し異なっています(おそらく機能的です)。これは、そのダイアログで「OK」をクリックすると何もしないためです。 okをクリックするとログインフロー(これは恒星となるでしょう)が行われるはずですが、やはり何もしません。

私はFBSDKによって放送通知にタップしてきたと私はのための通知を得ることがわかります。エラーコードの結果として

com.facebook.sdk.FBSDKAccessTokenData.FBSDKAccessTokenDidChangeNotification

を190とサブコード458.

私の質問は2部構成: 1)実際にOKボタンで何かを行うために自動的に表示されるFBSDKダイアログで「ok」ボタンを取得するにはどうすればよいですか? 2)手動で(上記のボタンが何らかの理由で動作していないと仮定して)、accessToken状態をテストし、ユーザーを再認証しますか?

これは単純な解決策が必要であり、私は数日を費やしてこれを先取りすることができないようです。

ありがとうございました!

+0

私は[OK]をクリックの問題と、それが機能していないが、何のアクセストークンが存在しないためではない、とthusly何の権限ことを今参照してください。したがって、FBSDKでは(_FBSDKLoginRecoveryAttempter attemptRecoveryFromError :)が呼び出されると、ログイン部分は決して実行されません。これはバグのようですか?この動作を無効にして、自分のログイン回復アテンプターを提供する方法はありますか? –

+0

私は最新のココアポッドにParseとFBSDKを更新して、違いがあるかどうかを確認しました。これは簡単に再作成できます。単純に、Facebookのアカウント設定の[アプリ]タブからアプリの特権を削除し、iOSアプリを起動します。最新のSDKでは、エラーダイアログから「OK」をクリックしたときにログインしようとしますが、ログインが有効なトークンを設定していないと表示され、アプリが起動するたびにエラーダイアログが表示される状態になりますまたはアプリケーションがフォアグラウンドに来るとき。 –

+0

もし私が間違っていないのであれば、認証のためにoauth2 refreshTokenを使用するようなものです。もっと時間を費やしてより明確にしてください。私はそれに直面し、あなたを助けることができます。 –

答えて

3

私は同様の問題に遭遇しましたが(Parseとは関係ありません)。

Attempt to present <FBSDKContainerViewController: 0x126b222a0> on 
<FBSDKContainerViewController: 0x126a26d10> whose view is not in the window hierarchy! 

は、少なくとも私はXcodeで上記の警告を参照してください。

  1. FBSDKダイアログのOKボタンがこのような理由のために動作しないようです。ここでは、尋ねた二つの質問への私の答えは、私のアプリ(MacBookに接続されたデバイス上)でFacebookにログインしようとすると、コンソールが起動して失敗します。この特定の問題を回避する方法は見つけられませんでした。しかし、私はFBSDKダイアログを避ける方法を見つけました。次の項目を参照してください。

  2. FBユーザーに関する情報を要求することによって、accessTokenの有効性をテストします。要求がエラーで失敗した場合は、accessTokenが無効である可能性があります。ここでのコードサンプルは次のとおりです。

    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
        initWithGraphPath:@"me" parameters:@{@"fields": @"id, first_name, last_name"}]; 
    
    // The next line is important. 
    // It prevents FB SDK from handling the error automatically 
    // and allows you to handle the error yourself. 
    // In this way you avoid(!) the FBSDK dialog that says 
    // "Please login to this app again to reconnect with Facebook". 
    [request setGraphErrorRecoveryDisabled:YES]; 
    
    [request startWithCompletionHandler: 
        ^(FBSDKGraphRequestConnection *connection, id result, NSError *error){ 
    
        if (error) { 
         // An error occurred. Most likely the accessToken is not valid. 
         // Start the FB log-in process to obtain a valid token. 
        }else{ 
         // Everything's all right. Go on. 
        } 
    }]; 
    
+0

これは非常に良いです。エラーリカバリを無効にすることはトリックだと思います。私たちは、セッショントークンのチェックを終え、そこに状態を確実にするためにいくつかのことを行いました。しかし、これは、状況を回避するために我々がやったことと、より直接的かつ強力な重複を持っています。 –

関連する問題