0

問題は、Facebook ダイアログを呼び出してウォールに投稿すると、入力したバンドル パラメータが認識されないことです。エラーは次のコードにあると思います。

fb.dialog(AppTestingActivity.this, "feed" , params, new DialogListener() {

ただし、バンドルを認識して値を入力しない理由はわかりません。代わりに、ユーザーが独自の投稿を入力できるようにするダイアログが表示され、下部に「appTesting 経由」と表示されます。

ヘルプや情報を提供していただければ幸いです。ありがとう

コードは次のとおりです。

package com.app.apptesting;

import java.io.IOException;
import java.net.MalformedURLException;

import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class AppTestingActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

public String APP_ID = "App ID Was Entered Here"; //removed app id just for question
public Facebook fb = new Facebook(APP_ID);
ImageView pic, button;
Button post;
SharedPreferences sp;
public String access_token;
public long expires;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    post = (Button)findViewById(R.id.button1);

    sp = getPreferences(MODE_PRIVATE);
    access_token = sp.getString("access_token", null);
    expires = sp.getLong("access_expires", 0);
    rememberLogin();

    button = (ImageView)findViewById(R.id.login);
    pic = (ImageView)findViewById(R.id.picture_pic);
    button.setOnClickListener(this);
    updateButtonImage();

}


public void rememberLogin(){
    if (access_token != null){
        fb.setAccessToken(access_token);
    }
    if (expires != 0){
        fb.setAccessExpires(expires);
    }
}



private void updateButtonImage() {
    // TODO Auto-generated method stub
    if (fb.isSessionValid()){
        post.setVisibility(Button.VISIBLE);

        button.setImageResource(R.drawable.logout_button);

    }else{
        post.setVisibility(Button.INVISIBLE);

        button.setImageResource(R.drawable.login_button);
    }
}

public void buttonClicks(View v){
    switch (v.getId()){
        case R.id.button1:
            //post to facebook

            Bundle params = new Bundle();
            params.putString("name", "AppTesting");
            params.putString("caption", "Just Testing");
            params.putString("description", "Trying to work with the Facebook SDK");
            params.putString("link", "");
            params.putString("picture", "");

            fb.dialog(AppTestingActivity.this, "feed" , params, new DialogListener() {

                public void onFacebookError(FacebookError e) {
                    // TODO Auto-generated method stub

                }

                public void onError(DialogError e) {
                    // TODO Auto-generated method stub

                }

                public void onComplete(Bundle values) {
                    // TODO Auto-generated method stub

                }

                public void onCancel() {
                    // TODO Auto-generated method stub

                }
            });

            break;
    }
}

public void onClick(View arg0) {
    // TODO Auto-generated method stub
    if (fb.isSessionValid()){
        //logout
        try {
            fb.logout(getApplicationContext());
            updateButtonImage();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   }else{
        //login



        fb.authorize(AppTestingActivity.this, new String[]{"publish_stream", "email"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {

            public void onFacebookError(FacebookError e) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "onFacebookError", Toast.LENGTH_SHORT).show();
            }

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

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

                updateButtonImage();

            }

            public void onCancel() {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "onCancel", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    fb.authorizeCallback(requestCode, resultCode, data);
 }
4

1 に答える 1

0

なぜあなたfb.dialog()はステータスを投稿するために使用していますか?

呼び出す代わりに:

fb.dialog(AppTestingActivity.this, "feed" , params, new DialogListener() {

行う:

mAsyncRunner.request("me/feed", params, "POST", new RequestListener() {

あなたの壁に投稿します。

編集:

ユーザーに独自のメッセージを入力させることもできることを忘れていました。これは fb.dialog() で実行できます。サンプルコードを見て、適切に実行する方法を確認してくださいlinkパラメータがないことに注意してください。それを削除して、フィード ストーリーが適切に表示されるかどうかを確認してみてください。

于 2012-10-01T22:17:12.013 に答える