0

そして、あなたの時間と注意に前もって感謝します!
facebook sdkを使用する私のAndroidアプリはエミュレーターでうまく動作しますが、Samsung Galaxy S1とS2の両方のデバイスでonFacebookError()が発生します。より詳細なエラー出力情報も提供できればいいのですが、現在、それらをデバッグしてadblogcatで何が問題になっているのかを確認するためのデバイスが手元にありません。「onFacebookError」を表示するトーストが原因でonFacebookError()メソッドが実行されていることはわかっています。
私がなんとかそれらの電話を手に入れてエラーを調査してここに投稿するまで、誰かが以前にこの問題に遭遇しましたか?ここでこの問題を検索したところ、公式のFacebookアプリがデバイスにインストールされているためだと誰かが考えていることがわかりました。これは関係がありますか?
e.getMessage()をトーストして、次のようなエラーの詳細を取得します。

@Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
                //Toast.makeText(MemoFriendActivity.this, "fbError", Toast.LENGTH_SHORT).show();
                Toast.makeText(MemoFriendActivity.this, "MSG: "+e.getMessage()+ " CODE: "+e.getErrorCode(), Toast.LENGTH_LONG).show();

            }

S2デバイスで次のメッセージを表示しました:「MSG:ivalid_key:Androidキーの不一致。キー「XXX」がアプリケーション設定で指定された許可されたキーと一致しません。http: //www.facebook.com/developersコードでアプリケーション設定を確認してください:0 "


コード:

public void onClick(View v) {
    // TODO Auto-generated method stub
    if (MyUtil.fb.isSessionValid())
    {
        //button close session - log out of facebook
        try {
            MyUtil.fb.logout(getApplicationContext());
            updateGuiAccordingToState();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
    else
    {
        //login to facebook
        MyUtil.fb.authorize(this, new DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "fbError", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onError(DialogError e) {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "OnError", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(Bundle values) {
                // TODO Auto-generated method stub
                Editor editor = sp.edit();
                editor.putString("access_token", MyUtil.fb.getAccessToken());
                editor.putLong("access_expires", MyUtil.fb.getAccessExpires());
                editor.commit();
                getUsername();
                updateGuiAccordingToState();
            }

            @Override
            public void onCancel() {
                // TODO Auto-generated method stub
                Toast.makeText(MemoFriendActivity.this, "OnCancel", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    MyUtil.fb.authorizeCallback(requestCode, resultCode, data);
}

My.Util.fbは静的なFacebookオブジェクトです。この場合も、このコードはエミュレーターで機能します。誰かがデバイスでそれを解決する方法を知っていますか?すぐにデバイスで調べて共有できるといいのですが。

4

2 に答える 2

1

わかりました、自分で答えを得ました。これはAndroidキーの不一致です。エミュレーターではなくデバイスからアプリを実行する場合は、開発用PCで取得したハッシュキーを、電話のアプリの1つに置き換える必要があります。これは、iのようなe.getMsgの出力から取得できます。ここに示した。デバイスからキーを取得し、facebook.com/developersで新しいハッシュとして設定します。アプリを電話とPCの両方で動作させたい場合は、PCのハッシュキーに加えてこのハッシュキーを追加することもできます。これが他の人に役立つことを願っています。

于 2012-09-02T06:44:46.147 に答える
0

デバイスでトーストが表示される場合は、値e.getMessage()をトーストして、より詳細なエラーレポートを表示します。

于 2012-08-31T17:50:38.413 に答える