2012-01-06 18 views
5

私はAndroidのFacebook SDKを使用しようとしていますが、運はありません。 問題は、Facebookログインウィンドウがロードを開始しますが、何か起こる前に消えてしまうことです。これは実際のデバイスでの動作ですが、エミュレータ上ではすべて正常です。私がやっていることAndroid - facebook sdkログインウィンドウが消える

  1. here
  2. からSDKをダウンロードし、私のプロジェクトにJavaファイルを追加しました。
  3. はFacebookのアプリケーションを作成しました。
  4. キーハッシュ値を取得し、私のFacebookのアプリケーションを更新しました。

しかし、ログインウィンドウは表示されません。私はlogcat上の任意のエラーを参照してくださいいけない、これだけ:

ActivityManager(2698):スタート:テント{CMP = com.facebook.katana/.ProxyAuth(エクストラを持っている) ActivityManager(2698):起動しようとしていますcom.facebook.katana/.ProxyAuth ActivityManager(2698):表示com.facebook.katana/.ProxyAuth:+ 371ms(+合計466ms)

任意のアイデア?

10倍:)

EDIT: 活動にこれらのコード行を追加することで問題を解決したようだ:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

得た場合はこちらから:SO Question

+0

、デバイス、ログイン画面の消失でテストすることが原因である可能性がありながらも、私は、このような問題に直面していたlog.iを持つすべてのlog.dを置き換える()文()、多くの理由で、私はデバイスの日付が古すぎるためにSSLExceptionのためにそれに直面しました –

答えて

0

あなたは、いくつかを入れたい場合がありますFacebook Dialogの各イベント(onComplete、onFacebookError、onError、onCancel)のデバッグメッセージ(log.v())。私は同じ問題を抱えていた。しかし、私の問題はキーハッシュに関連していた、私は間違ったキーハッシュを持っていた。 keytoolがパスワードを要求しない場合は、不正なキーが返されます。間違ったキーハッシュで、私はあなたと同じ行動を取る。

もう1つのことは、すでにあなたのデバイスのFacebookにログインしている可能性があります。したがって、あなたの許可を求める必要はありません。その場合は、Facebookからログアウトし、アプリケーションを実行してください。

+0

すべてのFacebook Dialogイベントにメッセージを追加しましたが、どれも表示されていません。関連するコードの最後の行は次のようになります:facebook.authorize(this、PERMISSIONS、new LoginDialogListener()); –

3

com.facebook.katanaからのlogcatエラーは、AndroidのFacebookアプリからのものです。それは電話にインストールされていますか?それはそうであり、シングルサインオン(SSO)にデフォルト設定されていますか? SSOを回避し、ダイアログのログインを強制

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener()); 

としてあなたAUTHORIZEをやってみてください。 クラッシュを回避する場合は、SDKとインストールされているFacebookアプリの間に不一致がある可能性が最も高いです。彼らは一緒に働くことについてはかなり気難しい傾向があります。そうであれば、安定したペアを見つける前に、おそらくそれぞれのバージョンをいくつか試してみる必要があります。

+0

すばらしい解決策。私のアプリでは、それは完璧な作品です。ありがとうたくさんのTroid! –

1

デバイスネイティブアプリケーションのFacebookには既にインストールしていますか? com.facebook.katana - これはFacebookのアプリケーションからです。このアプリケーションによって既に認証されているため、これが発生する可能性があります。 私は何をしますか? 私はのコメント欄にコメントします。Javaのコード:

public void authorize(Activity activity, String[] permissions, int activityCode, final  DialogListener listener) { 
    boolean singleSignOnStarted = false; 

    mAuthDialogListener = listener; 

    // Prefer single sign-on, where available. 
    //  if (activityCode >= 0) { 
    //   singleSignOnStarted = startSingleSignOn(activity, mAppId, permissions, activityCode); 
    //  } 
    // Otherwise fall back to traditional dialog. 
    if (!singleSignOnStarted) { 
     startDialogAuth(activity, permissions); 
    } 
} 

また、私は、マルチログインを行うと、問題を見つけ、私は1つのログイン/パスワードでのauthとき、新しいログインを追加しようと、ショーのFacebookのダイアログやブラウザの自動ページログインショーで試してみて、すぐに消えます。これは、previosデータによるログインが発生したためです。私がいるときfacebook.java: 無効にstartDialogAuthクッキー。 com.facebook.androidライブラリプロジェクトで

private void startDialogAuth(Activity activity, String[] permissions) { 
    Bundle params = new Bundle(); 

    if (permissions.length > 0) { 
     params.putString("scope", TextUtils.join(",", permissions)); 
    } 
    //  CookieSyncManager.createInstance(activity); 
    Util.clearCookies(activity); 

    dialog(activity, LOGIN, params, new DialogListener() { 

     public void onComplete(Bundle values) { 
      // ensure any cookies set by the dialog are saved 
      //    CookieSyncManager.getInstance().sync(); 
      setAccessToken(values.getString(TOKEN)); 
      setAccessExpiresIn(values.getString(EXPIRES)); 
      if (isSessionValid()) { 
       Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login Success! access_token=%s expires=%s", getAccessToken(), getAccessExpires()); 
       mAuthDialogListener.onComplete(values); 
      } 
      else 
       mAuthDialogListener.onFacebookError(new FacebookError("Failed to receive access token.")); 
     } 

     public void onError(DialogError error) { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login failed: %s", error); 
      mAuthDialogListener.onError(error); 
     } 

     public void onFacebookError(FacebookError error) { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login failed: %s", error); 
      mAuthDialogListener.onFacebookError(error); 
     } 

     public void onCancel() { 
      Tracks.itTrack(Tracks.Dev, "Facebook-authorize. Login canceled"); 
      mAuthDialogListener.onCancel(); 
     } 
    }); 
} 
+0

ポストを書いているうちに、私の前にトロイド:) –

関連する問題