Android Facebook SDK:在不显示Facebook页面的情况下发布消息

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

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

EDIT1:这是我使用project后收到的消息


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

使用FaceBookRocketAPI如果您使用此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);
        }
    }
}

}

使用FaceBookRocketAPI如果您使用此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);
        }
    }
}

}

通过添加一个jar文件,您可以很容易地做到这一点,并遵循一些简单的步骤。 你必须在facebook上有一个开发者帐户。
有关您的问题的完整信息,请访问此链接。请看我在那里给出的答案。

通过添加一个jar文件,您可以很容易地做到这一点,并遵循一些简单的步骤。 你必须在facebook上有一个开发者帐户。 有关您的问题的完整信息,请访问此链接。请看我在那里给出的答案。

这是不可能的

您必须登录facebook帐户才能在facebook上发布此消息

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

好吧,但是有一个替代品。如果您使用facebook sdk在facebook上实现post消息,那么它可能会对您有所帮助。使用它,您只能获得一次facebook登录屏幕。如果用户已使用该登录id和密码注册,那么它将永远不会再出现,只需发送一条消息,说明该消息已发布在facebook上

有关上述示例,请参阅本示例

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

    享受。:)

    已更新

    要在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() {}                 
                            });
    
    这是不可能的

    您必须登录facebook帐户才能在facebook上发布此消息

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

    好吧,但是有一个替代品。如果您使用facebook sdk在facebook上实现post消息,那么它可能会对您有所帮助。使用它,您只能获得一次facebook登录屏幕。如果用户已使用该登录id和密码注册,那么它将永远不会再出现,只需发送一条消息,说明该消息已发布在facebook上

    有关上述示例,请参阅本示例

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

    享受。:)

    已更新

    要在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() {}                 
                            });
    
    试试这个

    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();
        }
    }
    
    一定要按照

    的方法来做

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


    一定要遵循

    我认为这是不可能的,没有登录页面,你永远无法将消息发布到facebook。我不确定,我太想知道这个问题的答案了。登录页面可以。但我不希望在用户发帖时显示消息编辑页面messages@someone_smiley:你真正想要什么?只需登录页面就会出现,如果消息已发布,则会显示消息已发布的消息,如果未发布,则不会发布Mesasge。对吧???对。我只是不希望用户能够编辑任何消息。程序内部将有固定的消息。当用户按“POST”时。它只是直接发布消息,而不要求用户输入消息。我认为这是不可能的,没有登录页面,你永远无法将消息发布到facebook。我不确定,我太想知道这个问题的答案了。登录页面可以。但我不希望在用户发帖时显示消息编辑页面messages@someone_smiley:你真正想要什么?只需登录页面就会出现,如果消息已发布,则会显示消息已发布的消息,如果未发布,则不会发布Mesasge。对吧???对。我只是不希望用户能够编辑任何消息。程序内部将有固定的消息。当用户按“POST”时。它只需直接发布消息,而不要求用户输入消息。谢谢Naresh。我已在清单文件中授予internet权限并输入应用程序Id。仍然无法使其运行。我遗漏了什么吗?我已经添加了jar文件。它被编译了。但是应用程序不起作用我已经完成了这个任务,你正在寻找我会在几分钟内提供信息,你添加了TestRocket.java类伟大的你的问题现在解决了。谢谢你接受我的回答。谢谢纳雷什。我已在清单文件中授予internet权限并输入应用程序Id。仍然无法使其运行。我遗漏了什么吗?我已经添加了jar文件。它被编译了。但是应用程序不起作用我已经完成了这个任务,你正在寻找我会在几分钟内提供信息,你添加了TestRocket.java类伟大的你的问题现在解决了。谢谢你接受我的回答。我正在努力。看起来,在授予从清单文件访问internet的权限并输入应用程序id后,仍然无法运行它。我已经添加了jar文件。它被编译了。但应用程序不工作,请检查。我已经编辑了这篇文章。告诉我如果你