没有打开对话框的Android发布消息到Facebook Wall?

时间:2012-10-27 18:09:21

标签: android facebook facebook-graph-api

我正在做一个应用程序,在那个应用程序中我想在没有打开对话框的情况下将消息发布到Facebook墙上。

我的完整Facebook壁邮政编码:

Facebook mFacebook = new Facebook("xxxxxxxxxxxxxxxx");//MY APP ID
        Log.d("Tests", "Testing graph API wall post");
        try {
            String response = mFacebook.request("xxxxxxx");//USER ID
            Bundle parameters = new Bundle();
            parameters.putString("message", "hi hi hi");
            parameters.putString("description", "test test test");
            response = mFacebook.request("xxxxxxxx/feed", parameters,"POST");
            if (response == null || response.equals("") || 
                    response.equals("false")) {
                Log.v("Error", "Blank response");
            }
        } catch(Exception e) {
            e.printStackTrace();
        } 

此代码显示错误

logcat错误:

10-27 23:19:53.369: WARN/System.err(9330): java.net.MalformedURLException: Protocol not found: me?format=json
10-27 23:19:53.369: WARN/System.err(9330):     at java.net.URL.<init>(URL.java:273)
10-27 23:19:53.369: WARN/System.err(9330):     at java.net.URL.<init>(URL.java:157)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.Facebook.Util.openUrl(Util.java:151)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.Facebook.Facebook.request(Facebook.java:564)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.Facebook.Facebook.request(Facebook.java:500)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.birthdayreminder.DetailsPage.PostMessageToWall(DetailsPage.java:202)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.birthdayreminder.DetailsPage.access$1(DetailsPage.java:197)
10-27 23:19:53.369: WARN/System.err(9330):     at com.whitehorse.birthdayreminder.DetailsPage$3.onClick(DetailsPage.java:149)
10-27 23:19:53.369: WARN/System.err(9330):     at android.view.View.performClick(View.java:2485)
10-27 23:19:53.369: WARN/System.err(9330):     at android.view.View$PerformClick.run(View.java:9080)
10-27 23:19:53.369: WARN/System.err(9330):     at android.os.Handler.handleCallback(Handler.java:587)
10-27 23:19:53.369: WARN/System.err(9330):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-27 23:19:53.369: WARN/System.err(9330):     at android.os.Looper.loop(Looper.java:130)
10-27 23:19:53.369: WARN/System.err(9330):     at android.app.ActivityThread.main(ActivityThread.java:3687)
10-27 23:19:53.369: WARN/System.err(9330):     at java.lang.reflect.Method.invokeNative(Native Method)
10-27 23:19:53.369: WARN/System.err(9330):     at java.lang.reflect.Method.invoke(Method.java:507)
10-27 23:19:53.379: WARN/System.err(9330):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
10-27 23:19:53.379: WARN/System.err(9330):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
10-27 23:19:53.379: WARN/System.err(9330):     at dalvik.system.NativeStart.main(Native Method)

请提供一些关于facebook SDK的建议,

谢谢,

2 个答案:

答案 0 :(得分:2)

这是我用于我的应用程序的代码,用于在没有对话框的情况下将消息发布到Facebook墙上:

Facebook facebook = new Facebook(MY_APP_ID);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
Bundle params = new Bundle();
params.putString("caption", "My Caption");
params.putString("description", "description here");
params.putString("picture", "http://nyan-cat.com/images/nyan-cat.gif");
params.putString("name", "name string");
params.putString("message", "my message here");
mAsyncRunner.request("me/feed", params, "POST", new RequestListener() {
    @Override
    public void onFacebookError(FacebookError e, final Object state) {
        Log.e("Facebook", e.getMessage());
        e.printStackTrace();
    }

    @Override
    public void onFileNotFoundException(FileNotFoundException e, final Object state) {
        Log.e("Facebook", e.getMessage());
        e.printStackTrace();
    }

    @Override
    public void onIOException(IOException e, final Object state) {
        Log.e("Facebook", e.getMessage());
        e.printStackTrace();
    }

    @Override
    public void onMalformedURLException(MalformedURLException e, final Object state) {
        Log.e("Facebook", e.getMessage());
        e.printStackTrace();
    }

}

答案 1 :(得分:1)

Facebook facebook = new Facebook(APP_ID);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
Bundle params = new Bundle();
Bundle params = new Bundle();
params.putString("message", Message);
String resp= "";
try {
    resp = mAsyncRunner.request("me/feed", params, "POST");
/*
There are not only one request function in the SDK.(with different parameter)
Try the read the source code in the SDK. 
There are brief remarks on each function and parameters.
You can post wall with above request function and get the postID with the following code.
*/
} catch (FileNotFoundException e) {
} catch (MalformedURLException e) {
} catch (IOException e) {
}
try{
    resp = new JSONObject(resp).getString("id");//POST ID Here
}catch(JSONException e1){
}
};