AndroidでFacebookログインを使用しています。
コード:
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button);
loginButton.setReadPermissions("email", "public_profile");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Log.println(Log.ASSERT, "FB", "inicio session ");
}
@Override
public void onCancel() {
Log.println(Log.ASSERT, "FB", "OP NO completada");
// App code
}
@Override
public void onError(FacebookException exception) {
Log.println(Log.ASSERT, "FB", " Errro de sesion ");
exception.printStackTrace();
// App code
}
});
ただし、常に次のエラーが発生します。
SERVER_ERROR:[コード] 1675030 [メッセージ]:クエリの実行中にエラーが発生しました。 [extra]:操作「ProxyAuthAppLoginQuery」の実行中のエラー:Query.proxy_auth_app_loginで:フィールドの解決に失敗しました。 W/System.err:
com.facebook.login.LoginManager.onActivityResult(LoginManager.Java:190)W/System.err:at com.facebook.login.LoginManager $ 1.onActivityResult(LoginManager.Java:159)W/System。 err:com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.Java:82)W/System.err:at com.procibernetica.moca.MainActivity.onActivityResult(MainActivity.Java:130)W/System.err:at Android .app.Activity.dispatchActivityResult(Activity.Java:5423)W/System.err:at Android.app.ActivityThread.deliverResults(ActivityThread.Java:3401)W/System.err:at Android.app.ActivityThread.handleSendResult(ActivityThread .Java:3448)W/System.err:at Android.app.ActivityThread.access $ 1300(ActivityThread.Java:138)W/System.err:at Android.app.ActivityThread $ H.handleMessage(ActivityThread.Java:1284) W/System.err:at Android.os.Handler.dispatchMessage(Handler.Java:102)W/System.err:
Android.os.Looper.loop(Looper.Java:149)W/System.err:at Android.app.ActivityThread.main(ActivityThread.Java:5061)W/System.err:at Java。 lang.reflect.Method.invokeNative(Native Method)W/System.err:at Java.lang.reflect.Method.invoke(Method.Java:515)W/System.err:at com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.Java:787)W/System.err:at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:603)W/System.err:at dalvik.system.NativeStart.main (ネイティブメソッド)
次の権限を追加しました。
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
Facebookのドキュメントが正しくありません。動作させるには、3つの既定のアクセス許可をすべて追加する必要がありました。
loginButton.setReadPermissions("email", "public_profile", "user_friends");
@ダニエルの答えは正しいですが、私はその中にさらに追加したいと思います。このタイプのエラーは、アプリが開発中の場合にのみ発生します。この link に従って、アプリを選択します。その後、ここで2つのことができます。 ロールタブから、あなたの友人にのみログインを許可するか、またはアプリレビューを選択することができますそしてapp public
を作成すると、誰でもログインできるようになります。
Firebase UIがAndroid:value
を指定していたため、同様の問題が発生していました。これは私がそれを解決した方法です:
<application
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme.Base">
<meta-data
Android:name="com.facebook.sdk.ApplicationId"
tools:replace="Android:value"
Android:value="@string/facebook_app_id" />
<acitivity
...
</activity>
...
上記のすべての答えは私を助けませんでした、あなたがこのコマンドを使用したとき何がしたか
keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
facebookの設定に入れたキーハッシュを取得します。
パスワードの入力を求められます。最初は何も設定していなかったため、パスワードとしてAndroid
を入力したときに問題が発生しました。動いた !
ライブ開発者モード 開発者モードのステータスを確認してください。 「ライブ」でなければなりません。まず、Facebookのログインまたはテストをテストする独自のFacebookプロジェクトのプライバシーURLを追加する必要があります。次に、開発者モードを有効にします(オンにします)。
私の場合、間違ったOpenSSLを使用していたため、生成されたハッシュキーは間違っていました。私はopenssl-0.9.8e_X64.Zipの代わりにopenssl-0.9.8k_X64.Zipを使用していましたが、これにより間違ったハッシュキーが生成され、この問題を引き起こしました。
私の場合、問題はFacebookアプリのページで送信する必要がある間違ったキーハッシュを生成しましたこの記事で見つかった解決策 https://developers.facebook.com/docs/facebook-login/Android/advanced
キーハッシュを手動で確認する-Facebookに送信されたキーハッシュを印刷して、App Dashboardでその値を使用できます。メインアクティビティでonCreate()にこの変更を加えます。
try
{
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
他の回答に加えて、ログインに使用されているアカウントのメールが検証されていることも確認してください。
このエラーは他の状況でも返されます-アプリが公開されている場合やテスターとしてリストされている場合でも。
再確認してください
<meta-data Android:name="com.facebook.sdk.ApplicationId" Android:value="@string/facebook_app_id"/>
特に、strings.xmlでハードコーディングするのではなく、gradleビルドを使用して動的に指定する場合、正しいFacebookアプリIDに解決されます。
問題ログ:SERVER_ERROR:[コード] 1675030 [メッセージ]:クエリ実行エラー
そして、この特定の問題に対する正確なソリューション(クエリ実行エラー)
は@ alohaによって回答され、アクセス用のクエリを更新します。
loginButton.setReadPermissions( "email"、 "public_profile"、 "user_friends");
画像参照
問題ログ:App Not Setup。このアプリはまだ開発モードです。そして、あなたはそれにアクセスできません。テストユーザーを登録するか、アプリ管理者に許可を求めます
ライブモードに変更する方法
1。に行く: https://developers.facebook.com
2。 「マイアプリ」リストでアプリを選択します
3。スイッチをオフからオンに切り替えます
テストとして追加する方法OR ADMIN
1。に行く: https://developers.facebook.com
2。 「マイアプリ」リストでアプリを選択します
3。移動:ロール>ロール>管理者の例の追加を押します 4.新しい管理者/テスターのFacebookアカウントを検索します。
5.管理者は確認のためにFacebookのパスワードを入力する必要があります。その後、送信します
新しい管理者は、developer.facebookページに移動してリクエストを受け入れる必要があります
6。に行く: https://developers.facebook.com
7。プロフィール>リクエスト>確認
8.おめでとう新しい管理者として割り当てられました
開発用のハッシュキーを取得および設定する方法
as Facebookログインドキュメントを参照
https://developers.facebook.com/docs/Android/getting-started/#create_hash
私が最も望ましい解決策は、コードによるものです(サンプルアプリのトラブルシューティング)
ハッシュキーを出力します。更新できます
https://developers.facebook.com/apps/yourFacebookappID/settings/basic/
onAndroid> Key Hashesセクション
hashKeyを取得する方法の段階的なプロセス
Facebook Developerでの更新方法に関する段階的なプロセス。
Facebook開発者ページを開きます。 Facebook開発者ページを更新するためのアクセス権が必要です: https://developers.facebook.com
次の手順に従ってください。
文字列リソース「facebook_application_id」をstrings.xmlに追加します
aPP_IDをFacebookアプリIDに置き換えます
<string name="facebook_application_id" translatable="false">APP_ID</string>