0

Facebook SDK を通じて、Facebook にメッセージを共有しています。メッセージを正常に共有できますが、ログインしてメッセージを投稿するためのダイアログが表示されません。共有ボタンをクリックすると、ダイアログ インターフェイスなしでメッセージが Facebook に投稿されます。では、ダイアログ ボックスを表示し、ユーザーが投稿ボタンをクリックできるようにする方法は?

これはmtコードです:

@Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       Log.i(TAG, "Try to create activity...");

       mFacebook = new Facebook(FACEBOOK_APPID);
       mAsyncRunner = new AsyncFacebookRunner(mFacebook);

       if(!restoreCredentials(mFacebook)) {
            Log.i(TAG, "Try to get token...");
            mFacebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
        }

        postFacebookMessage();
    }

///

private void postFacebookMessage() {
        Log.i(TAG, "Try to post message");

        token = mFacebook.getAccessToken();
        Log.i("token", "" + token);

        Bundle parameters = new Bundle();
        parameters.putString("access_token", token);
        parameters.putString("message", "Text is test message.");
        parameters.putString("name", "Chef Astro");
        parameters.putString("link", "http://www.astrogempak.com.my");
        parameters.putString("caption", "Caption");
        parameters.putString("description", message);
        parameters.putString("picture","http://a1.mzstatic.com/us/r30/Purple/v4/2d/7d/c3/2d7dc3ed-9e32-cd7b-adba-2a31637a8cf0/mzl.toeyydsk.175x175-75.jpg");

        mAsyncRunner.request("me/feed", parameters, "POST", new WallPostRequestListener(), null); 
    } 

///

class LoginDialogListener implements DialogListener {

    public void onComplete(Bundle values) {
        saveCredentials(mFacebook);
        Log.i(TAG, "Credentials saved.");
    }

    public void onFacebookError(FacebookError error) {
        showToast("Authentication with Facebook failed!");
    }

    public void onError(DialogError error) {
        showToast("Authentication with Facebook failed!");
    }

    public void onCancel() {
        showToast("Authentication with Facebook cancelled!");
    }
}

///

public boolean saveCredentials(Facebook facebook) {
    Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
    editor.putString(TOKEN, facebook.getAccessToken());
    editor.putLong(EXPIRES, facebook.getAccessExpires());
    return editor.commit();
}

public boolean restoreCredentials(Facebook facebook) {
    SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);

    facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
    facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));

    return facebook.isSessionValid();
}

///

public class WallPostRequestListener extends BaseRequestListener {
    public void onComplete(final String response, final Object state) {
        Log.d("Facebook-Example", "Got response: " + response);
        String message = "<empty>";
        try {
            JSONObject json = Util.parseJson(response);
            message = json.getString("message");
        } catch (JSONException e) {
            Log.w("Facebook-Example", "JSON Error in response");
        } catch (FacebookError e) {
            Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
        }

        final String text = "Your Wall Post: " + message;
        FacebookActivity.this.runOnUiThread(new Runnable() {
            public void run() {
                Log.d(TAG, text);
            }
        });

        closeActivity();
    }
}

上記のコードでは、ダイアログが表示されたときにユーザーがテキストボックスに提案を書き込むことができ、ここでそれを取得できると期待しています。

4

1 に答える 1

0

こんにちは、Android 用の Facebook のネイティブ SDK を使用していますか? 使用している場合は、このチュートリアルをお読みください。このチュートリアルでは、適切な例を使用して Android 用のすべての Facebook ダイアログについて説明します。

FaceBook チュートリアル リンク :

于 2012-09-16T19:18:12.853 に答える