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