android keyhash - com.facebook.katana.provider.AttributionIdProviderのプロバイダ情報の検索に失敗しました




4 Answers

これは、次の理由により発生します。

  1. あなたはインターネットに接続されていません
  2. あなたはインターネットアクセス(Manifest.xml)の許可を与えていません。
  3. あなたは正しいhashkeyをアプリに使用していません
  4. あなたは正しいApp Idを提供していません
api facebookcontentprovider

誰でもこのエラーの意味を知っていますか? LogCatシェルで、アンドロイドアプリケーションとFacebookに接続するたびに(エミュレータ経由で)それを取得します。

機能の権限付与を担当するコード:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.authorize);
    mPrefs = getPreferences(MODE_PRIVATE);
    loginPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);
    if(access_token != null) {
        Singelton.mFacebook.setAccessToken(access_token);
    }
    if(expires != 0) {
        Singelton.mFacebook.setAccessExpires(expires);
    }

    Singelton.mFacebook.authorize(this, new String[] {"email","user_birthday"}, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {
            SharedPreferences.Editor editor = mPrefs.edit();
            editor.putString("access_token", Singelton.mFacebook.getAccessToken());
            editor.putLong("access_expires", Singelton.mFacebook.getAccessExpires());
            editor.commit();
            SharedPreferences.Editor logEditor = loginPref.edit();
            logEditor.putBoolean("login", true);
            logEditor.commit();
            addUser();
        }

        @Override
        public void onFacebookError(FacebookError error) {
            errorHandler();
        }

        @Override
        public void onError(DialogError e) {
            errorHandler();
        }

        @Override
        public void onCancel() {
            Log.d("MyApp", "Facebook cancel");
        }
    });

}

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



誰かの問題が4つの解決策で解決されなかった場合、これは役に立ちます。 Facebookのログインを実装するためにFragmentsを使用し始めたとき、私はこの同じエラーを受けていました。 私は、サポートライブラリv4フラグメントではなく、サポートライブラリのフラグメントに切り替えた後で、標準のフラグメントを使用していました。問題はなくなりました。 これは私の状況に固有のことかもしれませんが、私はそれを分かち合うと思っていました。 また、ログインボタンメソッドを使用している場合は、フラグメントを設定することを忘れないでください。

myFacebookLoginButton.setFragment(this); //Assuming you're in a Fragment class



@ Vinay-S-Shenoy氏によると、Facebookのアプリが電話機やシミュレータにインストールされていないときに起こる。 このエラーを回避するには、facebook.authorizeメソッドを呼び出す前にFacebookアプリケーションがインストールされているかどうかを確認する必要があります。その場合はFacebookブックアプリがインストールされていません。

public boolean isFacebookAvailable() {

    Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Test; please ignore");
intent.setType("text/plain");

    final PackageManager pm = this.getApplicationContext().getPackageManager();
    for(ResolveInfo resolveInfo: pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)){
        ActivityInfo activity = resolveInfo.activityInfo;
        // Log.i("actividad ->", activity.name);
        if (activity.name.contains("com.facebook.katana")) {
            return true;
        }
    }
    return false;
}



私にとっては(しかし私はイオンで働いています)それは打ち上げ前に画像が欠落/テンプレートのエラーのためでした:

ionic cordova build android

たぶんそれは他人を助けることができます...




Related

android facebook login logcat