Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Facebook:在墙上发布消息_Android_Facebook_Facebook Graph Api - Fatal编程技术网

Android/Facebook:在墙上发布消息

Android/Facebook:在墙上发布消息,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我想通过安卓应用程序在我自己的墙上发布一条消息。我使用loginToFacebook()方法登录。单击一个按钮,如果用户已登录,我希望发布一条消息。我不太熟悉facebookapi,所以我查阅了facebook开发者文档和互联网上的其他网站,提出了下面的代码。然而,我的墙上没有贴任何信息。显然,我错过了一些东西,但我不知道是什么,因为我的日志没有错误 public class ShareActivity extends Activity implements OnClickListener{

我想通过安卓应用程序在我自己的墙上发布一条消息。我使用loginToFacebook()方法登录。单击一个按钮,如果用户已登录,我希望发布一条消息。我不太熟悉facebookapi,所以我查阅了facebook开发者文档和互联网上的其他网站,提出了下面的代码。然而,我的墙上没有贴任何信息。显然,我错过了一些东西,但我不知道是什么,因为我的日志没有错误

public class ShareActivity extends Activity implements OnClickListener{
    Facebook facebook = new Facebook("477110419013909");
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
    String FILENAME = "AndroidSSO_data";
    SharedPreferences mPrefs;


  public void onClick(View arg0) {
        loginToFacebook();
        if (facebook.isSessionValid()) {
            Bundle bundle = new Bundle();
            bundle.putString("message","Hey Facebook!");
            try {
                String strRet = facebook.request("/me/feed",bundle,"POST");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                Log.e("Facebook", "Error: " + e.getMessage());
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                Log.e("Facebook", "Error: " + e.getMessage());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.e("Facebook", "Error: " + e.getMessage());
            }

}

public void loginToFacebook() {
    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();
                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors

                    }

                });
    }
}
}
我试着去做

if (facebook.isSessionValid()) {
            Bundle bundle = new Bundle();
            bundle.putString("message","Hey Facebook!");

            facebook.dialog((Activity) this, "feed", bundle,
                    new DialogListener() {

                        public void onComplete(Bundle values) {
                        }

                        public void onFacebookError(FacebookError error) {}
                        public void onError(DialogError e) {}
                        public void onCancel() {}
            });
 }

也不起作用

我已将此活动类用于发布图像:

public class PostStatusFBActivity extends Activity {
 private static String[] PERMISSIONS = 
            new String[] {"photo_upload","publish_stream"};

Bundle parems;
//String status;
private AsyncFacebookRunner mAsyncRunner;
public final static String FB_APP_ID = "xxxxxxxx"; 
private Facebook fb;
private Handler mHandler;
//private ProgressDialog mProgressDialog;
//private static String app_secret = "51a4b033e6cdbddf5761101d3eb09881";

/**
 * @see android.app.Activity#onCreate(Bundle)
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mHandler = new Handler();

    Intent intent=getIntent();
    parems=intent.getBundleExtra("params");
    fb= new Facebook(PostStatusFBActivity.FB_APP_ID);

    SessionStore.restore(fb, this);

    if (fb.isSessionValid()) 
        post_status();
    else
        fb.authorize(this, PERMISSIONS,new AppLoginListener());

}

private class AppLoginListener implements DialogListener {

    public AppLoginListener() {

    }

    public void onCancel() {

        Toast.makeText(getApplicationContext(), "Please accept to login", Toast.LENGTH_LONG).show();
        finish();
    }

    public void onComplete(Bundle values) {
        /**
         * We request the user's info so we can cache it locally and
         * use it to render the new html snippets
         * when the user updates her status or comments on a post. 
         */

        mAsyncRunner=new AsyncFacebookRunner(fb);
        post_status();
    }

    public void onError(DialogError e) {
        Log.e("BTS", "dialog error: " , e);               
    }

    public void onFacebookError(FacebookError e) {
        Log.e("BTS ", "facebook error: " , e);
        Toast.makeText(getApplicationContext(), "Facebook error", Toast.LENGTH_LONG).show();
        finish();
    }
}




protected void onActivityResult(int requestCode, int resultCode,Intent data) {
    //Facebook fb = Session.wakeupForAuthCallback();
    fb.authorizeCallback(requestCode, resultCode, data);
}



public void post_status() {

    Log.e("BTS ____  ", " Post satus called ");
    mAsyncRunner.request("me/photos", parems,"POST",new mRequestListener(),null);
}

public class mRequestListener implements RequestListener{

    @Override
    public void onMalformedURLException(MalformedURLException e, Object state) {
        Log.d("BTS", "******************* FACEBOOK::onMalformedURLException *******************");
        e.printStackTrace();
        finish();
    }

    @Override
    public void onIOException(IOException e, Object state) {
        Log.d("BTS", "******************* FACEBOOK::onIOException *******************");
        e.printStackTrace();
        finish();
    }

    @Override
    public void onFileNotFoundException(FileNotFoundException e, Object state) {
        Log.d("BTS", "******************* FACEBOOK::onFileNotFoundException *******************");
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Image not found", Toast.LENGTH_LONG).show();
        finish();
    }

    @Override
    public void onFacebookError(FacebookError e, Object state) {
        Log.d("BTS", "******************* FACEBOOK::onFacebookError *******************");
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Facebook error", Toast.LENGTH_LONG).show();
        finish();
    }

    String msg="";

    @Override
    public void onComplete(String response, Object state) {
        Log.d("BTS", "******************* FACEBOOK::onComplete *******************");

        // TODO Auto-generated method stub
        Log.d("Facebook-Example",
                "News feed: " + response.toString());
        JSONObject json;

        /*JSONObject json = Util.parseJson(response);
            final String pictureURL = json.getString("picture");
            if (TextUtils.isEmpty(pictureURL)) {
         * */
        try {
            json = Util.parseJson(response);
            Log.d("Facebook-Example",
                    "News feed: " + json.toString(2));

             final String post_id = json.getString("post_id");
             if (TextUtils.isEmpty(post_id)) {
                msg="Error in update status";
             }else{
                 msg="Status updated";
             }
             mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
                        //mProgressDialog.dismiss();
                        finish();
                    }
             });

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FacebookError e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
}

这是我从上一个活动传递的Bundle参数
byte[]data=null
Bundle params=新Bundle()
putByteArray参数(“照片”,数据); 参数putString(“标题”,状态)

可以放在Bundle上的其他值
params.putString(“消息”,“此字符串将显示为状态消息”);
putString(“链接”,“这是要转到的URL”);
参数putString(“名称”,“这将出现在图片旁边”);
params.putString(“标题”,“这将出现在标题下”);
params.putString(“描述”,“这将出现在标题下”);
params.putString(“图片”,“这是要显示在帖子中的图像”);

兄弟,你是如何解决问题的?我也有同样的问题