6

Facebookをアプリに統合しようとしているので、Facebook Androidのチュートリアルに従いましたが、最初の例(シングルサインオン)を機能させることができません。アプリが読み込まれると、Facebookダイアログが表示されますが、「エラーが発生しました。しばらくしてからもう一度お試しください」と表示されます。下部にFacebookスタイルの「OK」ボタンがあり、logcatには何もありません。 Facebookエラーを表示するアプリ

チュートリアルの手順に従いましたが、APPIDまたはkeytoolによって生成されたハッシュキーに何か問題があると思います。これが私が従ったステップです:

  1. fbgitのクローンを作成します。
  2. fbSDKプロジェクトを作成します。
  3. 独自のfbプロジェクトを作成し、fbSDKをライブラリとしてリンクします。
  4. 次に、opensslを使用してkeytool cmdを実行し、stackoverflowで他の人が提案したようにパスワード「android」を入力しました。
  5. 私はdevelopers.facebook.comにアクセスして、新しいアプリを作成しました。
  6. [設定の編集]->[モバイルとデバイス]で、表示されたボックスにハッシュを入力しました。
  7. [設定の編集]->[モバイルとデバイス]で、[アプリケーションの種類]として[ネイティブアプリ]を選択しました
  8. アプリに戻り、SSOサンプルコードをコピーして貼り付けました。
  9. Facebook()コンストラクターの「YOUR_APP_ID」を、新しいアプリのdevelopers.facebokk.comページに表示されているAPPIDに変更しました。
  10. 私は自分の携帯電話でアプリを実行しました。

logcatに何もない理由はわかりませんが、logcatをインストールすると、コンソールは常に必ず次のように言います。ActivityManager: Warning: Activity not started, its current task has been brought to the front

また、アプリへのlogcat参照や、FacebookSDKから取得したエラーが見つかりません。Facebook-ProxyAuth(4828): Failed to read calling package's signature.

私はこれに数時間いました、そしてどんな助けでも大いに感謝されるでしょう。私はFacebookSDKを信じることができず、Androidのヘルプは非常に大雑把なので、Facebookは自分自身を恥じるべきです。

ありがとう、

InfinitiFizz

4

5 に答える 5

2

実際、私はまったく同じ問題に遭遇し、解決しました。したがって、ハッシュ キーの生成では、次の手順を使用します。

  1. cmd を開き、Android SDK パスに移動します。
  2. 次のコマンドを入力します: keytool -exportcert -alias androiddebugkey -keystore [SDK パス | 例 c:\users\user].android\debug.keystore | openssl sha1 -バイナリ | openssl base64
  3. その後、「android」と入力してパスワードを入力します
  4. 結果を Facebook アプリの設定にコピーし、設定を保存します。
  5. Androidアプリでは、FacebookアプリID(Androidハッシュキーではありません)を使用してください。
于 2011-11-21T13:40:00.623 に答える
1

Facebookオブジェクトを正しいキーで適切に初期化する前に、Facebook APIを呼び出していたため、この問題が発生しました。正しいキーを使用していることと、Facebook オブジェクトを適切に初期化していることを確認してください。

また、別の Android アプリケーション キーを使用して Facebook の API 呼び出しを行おうとして、何度かつまずきました。Facebook のチュートリアルでは、コンパイル済みの apk を使用してキーを作成するように指示されていることに注意してください。IDE からコードを実行する場合 (私は Eclipse を使用しています)、このキー ハッシュは異なります。Eclipse からアプリを直接実行する場合、Facebook キーは異なります。これは、Eclipse からアプリを実行する場合、デフォルトのリリース キーを使用してアプリをビルドするためです。

このため、私は通常、Facebook 開発者ポータルに 2 つのキーを持っています。Android マーケットに使用されるリリース キーでコンパイルされた apk で作成された 1 つのキーと、Eclipse から直接アプリ コードを実行して作成された別のキー。

于 2012-09-01T04:15:02.890 に答える
0

ハッシュを正しく見つけるための最良の方法は、このコードの一部です。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    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) {

    }
    ...

com.facebook.samples.loginhowtoを独自のパッケージ名に置き換えます。

于 2013-01-11T20:58:04.650 に答える
0

ステップ 7 でネイティブ アプリを選択した理由は何ですか? デフォルトの HTML5 / モバイル Web のままにして、サンプルを動作させました。

于 2011-03-21T01:31:40.363 に答える