1

我正在尝试将 Facebook 集成到我的 Android 应用程序以进行社交发布。我已经从这里下载了最新的 Facebook sdk并应用了发布到 Facebook 所需的所有设置。现在我可以发布到 Facebook。但问题是,当我从 facebook sdk 运行示例程序时,一个类似页面的浏览器是打开的,用户必须自己在那里输入消息。但我不希望这个页面出现。我希望在不打开 Facebook 对话框的情况下直接发布固定消息。但是如果没有办法避免这种情况,请告诉我如何修复消息的某些部分,以便用户无法修改它。提前致谢

EDIT1:这是我使用这个项目后得到的消息

04-10 11:44:34.691: I/dalvikvm(719): Failed resolving Lnet/xeomax/TestRocket/TestRocket; 

>interface 22 'Lnet/xeomax/FBRocket/LoginListener;'

>04-10 11:44:34.691: W/dalvikvm(719): Link of class 'Lnet/xeomax/TestRocket/TestRocket;' failed

>04-10 11:44:34.691: D/AndroidRuntime(719): Shutting down VM

>04-10 11:44:34.701: W/dalvikvm(719): threadid=1: thread exiting with uncaught exception (group=0x40015560)

>04-10 11:44:34.781: E/AndroidRuntime(719): FATAL EXCEPTION: main

>04-10 11:44:34.781: E/AndroidRuntime(719): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{net.xeomax.TestRocket/net.xeomax.TestRocket.TestRocket}: java.lang.ClassNotFoundException: net.xeomax.TestRocket.TestRocket in loader dalvik.system.PathClassLoader[/data/app/net.xeomax.TestRocket-1.apk]

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.os.Handler.dispatchMessage(Handler.java:99)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.os.Looper.loop(Looper.java:130)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.main(ActivityThread.java:3683)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.reflect.Method.invokeNative(Native Method)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.reflect.Method.invoke(Method.java:507)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at dalvik.system.NativeStart.main(Native Method)

>04-10 11:44:34.781: E/AndroidRuntime(719): Caused by: java.lang.ClassNotFoundException: net.xeomax.TestRocket.TestRocket in loader dalvik.system.PathClassLoader[/data/app/net.xeomax.TestRocket-1.apk]

>04-10 11:44:34.781: E/AndroidRuntime(719):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)

>04-10 11:44:34.781: E/AndroidRuntime(719):     ... 11 more

编辑 2:通过引入微小的变化,现在我可以摆脱上述错误。只需将文件夹“libs”添加到项目中并在此文件夹中添加“fbrocket-0.1a.jar”。非常感谢大家花时间帮助我。

4

4 回答 4

3

您可以通过添加一个 jar 文件并按照一些简单的步骤轻松完成此操作。您必须在 facebook 上拥有开发者帐户。有关您的问题的完整信息可在Facebook 共享 此链接上的文本和图像中找到。请参阅我在那里给出的答案。

于 2012-04-10T04:07:29.373 回答
2

使用 FacebookRocket API http://www.androidpeople.com/android-facebook-api-example-using-fbrocket#idc-cover如果你使用这个 api facebook 登录页面只来试试这个

尝试以下代码

     import net.xeomax.FBRocket.FBRocket;
     import net.xeomax.FBRocket.Facebook;
     import net.xeomax.FBRocket.LoginListener;
     import net.xeomax.FBRocket.ServerErrorException;
     import android.app.Activity;
     import android.os.Bundle;



    public class Fbook extends Activity implements LoginListener {

private FBRocket fbRocket;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    shareFacebook();
}

public void shareFacebook() {
    fbRocket = new FBRocket(this, "PitchFork TRY",
            "xxxxxxxxxxxxxxxxxxxx");

    if (fbRocket.existsSavedFacebook()) {
        fbRocket.loadFacebook();
    } else {
        fbRocket.login(R.layout.searchlist_view);
    }
}




public void onLoginFail() {
    fbRocket.displayToast("FaceBook Login failed!");
    fbRocket.login(R.layout.searchlist_view);
}

public void onLoginSuccess(Facebook facebook) {

    fbRocket.displayToast("FaceBook Login success!");
    try {
    final BaseApplication mlisturl = (BaseApplication)   getApplication();
        facebook.setStatus("posting ur custom status :::::::::::::::"
                +"data");
        fbRocket.displayDialog("Status Posted Successfully!! "
                + facebook.getStatus());
    } catch (ServerErrorException e) {
        if (e.notLoggedIn()) {
            fbRocket.login(R.layout.searchlist_view);
        } else {
            System.out.println(e);
        }
    }
}

}

于 2012-04-10T04:04:54.470 回答
2

这是不可能的。

您必须登录 Facebook 帐户才能在 Facebook 上发布消息。

仅当您将 facebook id 和密码静态存储到应用程序中时,您的要求才可能实现。

好吧,但有一个替代方案。如果您使用 facebook sdk 在 Facebook 上实现发布消息,那么它可能会对您有所帮助。使用它,您只能获得一次 facebook 登录屏幕。如果用户已使用该登录 ID 和密码进行注册,那么它将永远不会再次出现,并简单地发送消息已发布在 Facebook 上的验证 toast 消息。

对于上述示例,请参阅此示例。

  1. 示例 1
  2. 示例 2
  3. 演示示例
  4. 示例 4

希望它会帮助你。如果没有,请告诉我。

享受。:)

更新

要在 facebook 上发布静态消息,请在将 Facebook sdk 集成到项目中后执行以下操作:

System.out.println("Message is: "+postMessage); // My static post message

                        facebook.authorize(MainActivityPage.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {                     
                            @Override                     
                            public void onComplete(Bundle values) {   

                                Bundle params = new Bundle();              
                                params.putString(Facebook.TOKEN, facebook.getAccessToken());              
                                params.putString("message", postMessage);               

                                AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);              
                                mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener(),null);

                                Toast.makeText(getApplicationContext(), "Message Posted on Facebook.", Toast.LENGTH_SHORT).show();
                            }                      
                            @Override                     
                            public void onFacebookError(FacebookError error) {}                      
                            @Override                     
                            public void onError(DialogError e) {}                      
                            @Override                     
                            public void onCancel() {}                 
                        });
于 2012-04-10T04:38:49.767 回答
1

试试这个

public void postMessageOnWall(String msg) {
    if (facebook.isSessionValid()) {
        Bundle parameters = new Bundle();
        parameters.putString("message", msg);
        try {
            String response = facebook.request("me/feed", parameters,"POST");
            System.out.println(response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        login();
    }
}

请按照链接

于 2012-04-10T05:09:10.253 回答