Java 如何发布到facebook android sdk:4.0.0
请帮忙 我有挂在墙上的按钮的代码:Java 如何发布到facebook android sdk:4.0.0,java,android,facebook,Java,Android,Facebook,请帮忙 我有挂在墙上的按钮的代码: btnPostToWall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { postToWall(); } }); public void postToWall() { // post on user's wall. facebook.dialog(this, "feed",
btnPostToWall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
postToWall();
}
});
public void postToWall() {
// post on user's wall.
facebook.dialog(this, "feed", new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onComplete(Bundle values) {
}
@Override
public void onCancel() {
}
});
}
但是我有了新的Faceboof android sdk 4.0.0,这段代码已经被弃用了
如何将帖子贴到新图书馆的墙上
我读过,但我不知道如何使用也许这不是你想要的解决方案,但我正在使用它 Facebook Android SDK 4有类
ShareApi
,用于共享您的内容。此类具有静态方法share()
:
)将使用message=null
创建ShareApi
的新实例,并且不会添加您的消息
解决方案:
ShareApi
,或者从Github复制此类
如果您使用的是Maven存储库public static void share(
final ShareContent shareContent,
final FacebookCallback<Sharer.Result> callback) {
new ShareApi(shareContent)
.share(callback);
}
public ShareApi(final ShareContent shareContent) {
this.shareContent = shareContent;
this.graphNode = DEFAULT_GRAPH_NODE;
}
对于这一点:
public static void share(final String message,
final ShareContent shareContent,
final FacebookCallback<Sharer.Result> callback) {
new ShareApi(message, shareContent)
.share(callback);
}
public ShareApi(String message, final ShareContent shareContent) {
this.message = message;
this.shareContent = shareContent;
this.graphNode = DEFAULT_GRAPH_NODE;
}
ShareApi
类共享您的内容:
ShareApi.share("My message", content, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
if (AppConfig.DEBUG) {
Log.d(TAG, "SUCCESS");
}
}
@Override
public void onCancel() {
if (AppConfig.DEBUG) {
Log.d(TAG, "CANCELLED");
}
}
@Override
public void onError(FacebookException error) {
if (AppConfig.DEBUG) {
Log.d(TAG, error.toString());
}
}
});
您已经阅读了本手册,可以在帖子中添加不同的ShareContent
。用于更好地理解新SDK
当然,您应该拥有有效的访问令牌和发布操作权限。关于如何从Android SDK 4.0共享的Facebook官方文档位于以下位置: 该链接提供了如何通过调用Graph API或通过调用本机Facebook应用程序对话框进行共享的示例 以下是我如何在自己的应用程序中实现共享对话框: 在活动/片段的xml中,我添加了
按钮
<Button
android:layout_width="144dp"
android:layout_height="144dp"
android:id="@+id/shareFacebookButton"
android:text=""
android:background="@drawable/facebook_button"
android:layout_gravity="center"
android:layout_marginBottom="6dp"
/>
然后在片段内部:
Button shareButton = (Button)view.findViewById(R.id.shareFacebookButton);
shareDialog = new ShareDialog(this);
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new
FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {}
@Override
public void onCancel() {}
@Override
public void onError(FacebookException error) {}
});
shareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration")
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}
}});
Button shareButton=(Button)view.findViewById(R.id.shareFacebookButton);
shareDialog=新建shareDialog(此);
callbackManager=callbackManager.Factory.create();
shareDialog.registerCallback(callbackManager,新建
FacebookCallback(){
@凌驾
成功时公共无效(sharr.Result结果){}
@凌驾
public void onCancel(){}
@凌驾
public void onError(FacebookException错误){}
});
shareButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(ShareDialog.canShow(ShareLinkContent.class)){
ShareLinkContent=新的ShareLinkContent.Builder()
.setContentTitle(“你好,Facebook”)
.setContentDescription(“Hello Facebook”示例展示了简单的Facebook集成)
.setContentUrl(Uri.parse(“http://developers.facebook.com/android"))
.build();
显示(链接内容);
}
}});
现在,当有人点击这个按钮时,他们会像你预期的那样看到Facebook对话框
希望这有帮助。这是一个基于Max answer的完整示例(2017年2月13日)
Gradle:compile'com.facebook.android:facebook android sdk:[4,5]
公共类ShareOnFacebook扩展活动{
私有静态最终字符串TAG=“ShareOnFacebook”;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
shareOnWall();
}
void shareOnWall(){
ShareDialog ShareDialog=新建ShareDialog(此);
callbackManager=callbackManager.Factory.create();
shareDialog.registerCallback(callbackManager,新建
FacebookCallback(){
@凌驾
成功时公开作废(共享结果){
Log.d(标记“onSuccess:”);
Toast.makeText(ShareOnFacebook.this,“onSuccess”,Toast.LENGTH_SHORT.show();
}
@凌驾
公开作废{
Log.d(标签“onCancel:”);
Toast.makeText(ShareOnFacebook.this,“onCancel”,Toast.LENGTH\u SHORT.show();
}
@凌驾
public void onError(facebook异常错误){
Log.d(标签“onError:”);
Toast.makeText(ShareOnFacebook.this,“onError”+error.toString(),Toast.LENGTH\u SHORT.show();
}
});
if(ShareDialog.canShow(ShareLinkContent.class)){
ShareLinkContent=新的ShareLinkContent.Builder()
.setContentTitle(“你好,Facebook”)
.setContentDescription(“Hello Facebook”示例展示了简单的Facebook集成)
.setContentUrl(Uri.parse(“http://developers.facebook.com/android"))
.build();
显示(链接内容);
}
}
@凌驾
受保护的void onActivityResult(最终int请求代码、最终int结果代码、最终意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
}
如果您只想发布文本,您必须使用我/feed并构建自己的方法:,对于其余的共享选项,您指出的文档都有明确的示例。我希望这会有所帮助。如何发布图像以及内容标题和描述?只需使用.setImageUrl(imageUrl)
其中imageUrl
是有效的URI
对象类型。回答很好,它帮助了我,但我想建议一个更改。与其更改ShareApi类,不如调用api.share(new FacebookCallback()…)
使用您刚刚创建的ShareApi引用。在您编写答案时,此非静态共享函数可能尚未公开。截至2017年4月18日,Graph API版本2.9及更高版本不再支持以下参数。对于版本2.8及更低版本,参数将继续工作到2017年7月17日。contentTitle表示链接中内容的标题a imageURL,即将显示在帖子a上的缩略图的URL
ShareLinkContent content = new ShareLinkContent.Builder()
.build();
<Button
android:layout_width="144dp"
android:layout_height="144dp"
android:id="@+id/shareFacebookButton"
android:text=""
android:background="@drawable/facebook_button"
android:layout_gravity="center"
android:layout_marginBottom="6dp"
/>
Button shareButton = (Button)view.findViewById(R.id.shareFacebookButton);
shareDialog = new ShareDialog(this);
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new
FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {}
@Override
public void onCancel() {}
@Override
public void onError(FacebookException error) {}
});
shareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration")
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}
}});
public class ShareOnFacebook extends Activity {
private static final String TAG = "ShareOnFacebook";
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
shareOnWall();
}
void shareOnWall() {
ShareDialog shareDialog = new ShareDialog(this);
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new
FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.d(TAG, "onSuccess: ");
Toast.makeText(ShareOnFacebook.this, "onSuccess", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Log.d(TAG, "onCancel: ");
Toast.makeText(ShareOnFacebook.this, "onCancel", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Log.d(TAG, "onError: ");
Toast.makeText(ShareOnFacebook.this, "onError" + error.toString(), Toast.LENGTH_SHORT).show();
}
});
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration")
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();
shareDialog.show(linkContent);
}
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}