【问题标题】:Android Facebook SDK : post message without showing facebook pageAndroid Facebook SDK:发布消息而不显示 Facebook 页面
【发布时间】:2012-04-10 03:59:11
【问题描述】:

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

EDIT1:这是我使用this项目后收到的消息

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”。非常感谢大家花时间帮助我。

【问题讨论】:

  • 我认为这永远不可能,没有登录页面,您永远无法将消息发布到 facebook。我不确定,我也很想知道这个问题的答案。
  • 登录页面没问题。但我不想在用户发布消息时显示消息编辑页面
  • @someone_smiley:你到底想要什么?只是登录页面出现,然后如果消息已发布,那么它会显示 Message 发布的消息,如果没有,则不会发布 Mesasge。对???
  • 是的。我只是不希望用户能够编辑任何消息。程序本身内部会有固定的消息。当用户按“POST”时。它只是直接发布消息而不要求用户输入消息。

标签: android facebook facebook-graph-api


【解决方案1】:

您可以通过添加一个 jar 文件并按照一些简单的步骤轻松完成此操作。 您必须在 facebook 上拥有开发者帐户。 有关您的问题的完整信息,请访问此链接上的 Facebook sharing of text and images。看看我在那里给出的答案。

【讨论】:

  • 谢谢纳雷什。我已在清单文件中授予 Internet 权限并输入应用程序 ID。仍然无法让它运行。我错过了什么吗?
  • 我已经添加了 jar 文件。它编译。但应用程序不工作
  • 我之前已经完成了你正在寻找的这个任务,我会在几分钟内提供信息
  • 你添加了 TestRocket.java 类
  • 您的大问题现已解决。感谢您接受我的回答。
【解决方案2】:

这是不可能的。

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

只有将 facebook id 和密码静态存储到应用程序中才能满足您的要求。

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

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

  1. Example 1
  2. Example 2
  3. Demo Example
  4. Example 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() {}                 
                        });

【讨论】:

  • 感谢您的帮助。我对 FB 登录页面没问题。我要避免的是弹出供用户编辑要发布的消息的窗口。我希望发布固定消息,并且不希望用户对其进行编辑。
  • @someone_smiley:您使用的是哪个示例?编辑帖子消息窗口是否来自 Facebook sdk 的一部分?请检查一下。
  • 我已经尝试了第 3 次 .... 尝试修改它,以便固定消息可以发布到 FB,而无需要求用户手动输入文本
  • @someone_smiley:好的。该示例工作正常。而要在不要求用户编辑的情况下发送消息,您必须手动设置它。
  • @someone_smiley:我的答案对你有用还是对鼻孔有用?
【解决方案3】:

使用 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);
        }
    }
}

}

【讨论】:

  • 谢谢。我正在努力。看起来像从清单文件授予访问互联网的权限并输入应用程序 ID 后,仍然无法运行
  • 我已经添加了 jar 文件。它编译。但应用程序不工作
  • 请检查。我已经编辑了帖子。告诉我你是否需要更多信息
  • searchlist_view 和 BaseApplication 无法解析为一个类型 :(
  • 你能发布关于 R.layout.searchlist_view 的布局代码吗?
【解决方案4】:

试试这个

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();
    }
}

请关注link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多