6

現在、私は Facebook SDK を使用している Android アプリを開発しています。ウォールなどにメッセージを投稿するのには問題なく動作していますが、この SDK を介して他のユーザーにアプリのリクエストを送信することはできません。

誰でも私を助けることができますか?

ここに私のコードスニペットがあります:

Bundle params = new Bundle();
params.putString("message", getString(R.string.request_message));
Utility.mFacebook.dialog(Hackbook.this, "apprequests", params, new AppRequestsListener());

およびAppRequestsListener :

public class AppRequestsListener extends BaseDialogListener {
    @Override
    public void onComplete(Bundle values) {
        Toast toast = Toast.makeText(getApplicationContext(), "App request sent", Toast.LENGTH_SHORT);
        toast.show();
    }

    @Override
    public void onFacebookError(FacebookError error) {
        Toast.makeText(getApplicationContext(), "Facebook Error: " + error.getMessage(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancel() {
        Toast toast = Toast.makeText(getApplicationContext(), "App request cancelled", Toast.LENGTH_SHORT);
        toast.show();
    }
}
4

6 に答える 6

9

SDK バージョン 3.0 以降では、WebDialog を使用します。利用可能なすべてのパラメーターを使用する提供された Builder を使用して作成する方法の例を次に示します。

private void sendRequestDialog() {
    Bundle params = new Bundle();
    params.putString("title", "Send a Request");
    params.putString("message", "Learn how to make your Android apps social");
    params.putString("to", "12343543,32423534");  // comma seperated list of facebook IDs to preset the recipients. If left out, it will show a Friend Picker.
    params.putString("data",
        "{\"badge_of_awesomeness\":\"1\"," +
        "\"social_karma\":\"5\"}");  // any additional data

    WebDialog requestsDialog = (
        new WebDialog.RequestsDialogBuilder(getActivity(), Session.getActiveSession(), params))
            .setOnCompleteListener(new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values, FacebookException error) {
                    // do something, e.g. show toast message
                }   
            })
            .build();
    requestsDialog.show();
}

参考:Facebook SDK 3.0 for Android: Send Requests

于 2013-04-14T14:06:38.903 に答える
4

Facebook API 3.0 の使用

1.友達リクエストを送る

Bundle params = new Bundle();
params.putString("message", "Learn how to make your Android apps social");

RequestsDialogBuilder builder = new RequestsDialogBuilder(MainActivity.this,
                                    Session.getActiveSession(), params);

builder.setOnCompleteListener(new OnCompleteListener() {

    @Override
    public void onComplete(Bundle values, FacebookException error) {

        if (error != null){
            if (error instanceof FacebookOperationCanceledException){
                Toast.makeText(MainActivity.this,"Request cancelled",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(MainActivity.this,"Network Error",Toast.LENGTH_SHORT).show();
            }
        }
        else{

            final String requestId = values.getString("request");
            if (requestId != null) {
                Toast.makeText(MainActivity.this,"Request sent",Toast.LENGTH_SHORT).show();
            } 
            else {
                Toast.makeText(MainActivity.this,"Request cancelled",Toast.LENGTH_SHORT).show();
            }
        }
    }
});

WebDialog requestDialog = builder.build();
requestDialog.show();

2.アプリリクエストを送信

Bundle parameters = new Bundle();
parameters.putString("message", "Send Request");

WebDialog.Builder builder = new Builder(MainActivity.this, Session.getActiveSession(),
                                "apprequests", parameters);

builder.setOnCompleteListener(new OnCompleteListener() {

    @Override
    public void onComplete(Bundle values, FacebookException error) {
        if (error != null){
            if (error instanceof FacebookOperationCanceledException){
                Toast.makeText(MainActivity.this,"Request cancelled",Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(MainActivity.this,"Network Error",Toast.LENGTH_SHORT).show();
            }
        }
        else{

            final String requestId = values.getString("request");
            if (requestId != null) {
                Toast.makeText(MainActivity.this,"Request sent",Toast.LENGTH_SHORT).show();
            } 
            else {
                Toast.makeText(MainActivity.this,"Request cancelled",Toast.LENGTH_SHORT).show();
            }
        }                       
    }
});

WebDialog webDialog = builder.build();
webDialog.show();
于 2013-02-20T09:24:41.787 に答える
3

android sdkには、使用できるダイアログがあり、ダイアログを開くときに、開くダイアログを指定します。

使用可能なダイアログのリストは、ダイアログのドキュメントで確認できます。ダイアログの1つはリクエストダイアログで、AndroidSDKからも次のように開くことができます。

Facebook facebook = new Facebook("YOUR_APP_ID");

....

Bundle params = new Bundle();
params.putString("title", "invite friends");
facebook.dialog(this, "apprequests", params, new DialogListener() {
    @Override
    public void onComplete(Bundle values) {}

    @Override
    public void onFacebookError(FacebookError error) {}

    @Override
    public void onError(DialogError e) {}

    @Override
    public void onCancel() {}
});

このダイアログにさらにパラメータを追加できます。ドキュメントを使用して、必要なものを確認してください。


編集

OK、このコードをチェックしてください:

Bundle paramsOut = new Bundle(), paramsIn = this.getIntent().getExtras();
paramsOut.putString("message", paramsIn.getString("message"));
this.facebook.dialog(this, "apprequests", paramsOut, new InviteListener(this));

私はそれを使用していますが、それは私にとってうまく機能し、アプリのリクエストが送信され、ユーザーがそれを受け取ります。コードは非常に似ているので、問題は何が違うかであると考えるのが安全です。したがって、コードを何が違うかに投稿する必要があります。

それで、あなたのそのAppRequestsListenerには何がありますか?ポップアップが表示されるだけだと言っても、私はあなたを助けるのに役立ちません。また、この*ハックブックとは何ですか?それは活動ですか?

于 2012-04-14T12:21:27.767 に答える
0

実際にリクエストを送信する onComplete のコードが欠落していると思います。onComplete にあるのはトーストだけなので、リクエストが送信されたことを示すメッセージが表示されます。実際にリクエストを送信するには、return Id が必要です。

public void onComplete(Bundle values) {
    final String returnId = values.getString("request");

    if (returnId != null) {
        Toast.makeText(getApplicationContext(),
                       "Request sent " + returnId,
                       Toast.LENGTH_SHORT).show();
    }
}

実際に onComplete の値を送信する必要があります。

于 2012-08-04T00:47:27.997 に答える
0

Facebook API < 3.0 の使用 - アプリ リクエストの送信

参照: https://stackoverflow.com/users/1237937/kirit

public void run() {
            Bundle parameters = new Bundle();
            parameters.putString("message", "Send Request");

        WebDialog.Builder builder = new WebDialog.Builder(ConnectionSearchFacebook.this, facebookConnector.getFacebook().getSession(),
                "apprequests", parameters);

        builder.setOnCompleteListener(new WebDialog.OnCompleteListener() {
            @Override
            public void onComplete(Bundle values, FacebookException error) {
                if (error != null){
                    if (error instanceof FacebookOperationCanceledException){
                        Toast.makeText(ConnectionSearchFacebook.this,"Request cancelled",Toast.LENGTH_SHORT).show();
                    }
                    else{
                        Toast.makeText(ConnectionSearchFacebook.this,"Network Error",Toast.LENGTH_SHORT).show();
                    }
                }
                else{

                    final String requestId = values.getString("request");
                    if (requestId != null) {
                        Toast.makeText(ConnectionSearchFacebook.this,"Request sent",Toast.LENGTH_SHORT).show();
                    }
                    else {
                        Toast.makeText(ConnectionSearchFacebook.this,"Request cancelled",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });

        WebDialog webDialog = builder.build();
        webDialog.show();

    }
于 2013-05-29T03:38:22.247 に答える