Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用4.x Facebook SDK在Libgdx中共享Facebook_Java_Android_Facebook_Facebook Sdk 4.x - Fatal编程技术网

Java 使用4.x Facebook SDK在Libgdx中共享Facebook

Java 使用4.x Facebook SDK在Libgdx中共享Facebook,java,android,facebook,facebook-sdk-4.x,Java,Android,Facebook,Facebook Sdk 4.x,我在LibGDX Android应用程序中与FacebookSDK共享某些内容时遇到问题。如果我单击“共享”按钮并共享我得到的内容,则返回sharr.Resultnull(因此帖子没有共享,但实际上是共享!),这与我取消共享时得到的结果相同 这是我的密码: Android Manifest <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/face

我在LibGDX Android应用程序中与FacebookSDK共享某些内容时遇到问题。如果我单击“共享”按钮并共享我得到的内容,则返回
sharr.Result
null
(因此帖子没有共享,但实际上是共享!),这与我取消共享时得到的结果相同

这是我的密码:

 Android Manifest
<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>


    <provider android:authorities="com.facebook.app.FacebookContentProviderMYFACEBOOKID"
              android:name="com.facebook.FacebookContentProvider"
              android:exported="true"/>

    <activity android:name="com.facebook.FacebookActivity"
              android:configChanges=
                  "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
              android:theme="@android:style/Theme.Translucent.NoTitleBar"
              android:label="@string/app_name" />
</application>
facebookPluginAndroid是我的类,它具有CallBackManager:

this.callbackManager=callbackManager.Factory.create()

以及
share()
功能(当我按下share按钮时启动):

public void共享(最终FacebookPluginListener FacebookPluginListener){
shareDialog=新建shareDialog(上下文);
最终ShareLinkContent=新的ShareLinkContent.Builder()
.setContentUrl(Uri.parse(“https://www.facebook.com/SOME “我的网站”的URL)
.build();
if(shareDialog.canShow(内容)){
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公开作废(共享结果){
System.out.println(“共享”+result.getPostId());
if(result.getPostId()!=null)
facebookPluginListener.getFacebookShareListener().onShareSuccess();
}
@凌驾
公开作废{
系统输出打印项次(“共享取消”);
}
@凌驾
公共无效onError(FaceBook例外e){
System.out.println(“共享错误”);
}
},121);
Gdx.app.postRunnable(新的Runnable(){
@凌驾
公开募捐{
显示(内容);
}
});
}
}
我做错了什么?我必须做什么才能与FacebookSDK正确共享内容

@编辑: FacebookPluginAndroid.java:

public class FacebookPluginAndroid {
private Activity context;
private ShareDialog shareDialog;
private CallbackManager callbackManager;
private LikeDialog likeDialog;

public FacebookPluginAndroid(Activity context) {
    this.context = context;
    this.callbackManager = CallbackManager.Factory.create();
}

public void share(final FacebookPluginListener facebookPluginListener) {


    shareDialog = new ShareDialog(context);
    shareDialog.setShouldFailOnDataError(true);
    final ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("https://www.facebook.com/SOME URL"))
            .build();
    if (shareDialog.canShow(content)) {
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                System.out.println("share SHARED " + result.getPostId());
                if (result.getPostId() != null)
                    facebookPluginListener.getFacebookShareListener().onShareSuccess();
            }

            @Override
            public void onCancel() {
                System.out.println("share CANCEL");
            }

            @Override
            public void onError(FacebookException e) {
                System.out.println("share ERROR");
            }


        }, 121);

        Gdx.app.postRunnable(new Runnable() {
            @Override
            public void run() {
                shareDialog.show(content);
            }
        });
    }
}

public void like(final FacebookPluginListener facebookPluginListener) {
    likeDialog = new LikeDialog(context);
    final LikeContent content = new LikeContent.Builder()
            .setObjectId("https://www.facebook.com/SOMEURL")
            .build();


    if (likeDialog.canShow(content)) {
        likeDialog.registerCallback(callbackManager, new FacebookCallback<LikeDialog.Result>() {
            @Override
            public void onSuccess(LikeDialog.Result result) {
                System.out.println("like success! android LIKE" + result.getData());

                if (result.getData().getBoolean("object_is_liked"))
                    facebookPluginListener.getFacebookLikeListener().onLikeSuccess();
            }

            @Override
            public void onCancel() {
                System.out.println("like cancel! android LIKE");
            }

            @Override
            public void onError(FacebookException e) {
                System.out.println("like error! android LIKE");
            }


        }, 123);

        Gdx.app.postRunnable(new Runnable() {
            @Override
            public void run() {
                likeDialog.show(content);
            }
        });
    }
}

public CallbackManager getCallbackManager() {
    return callbackManager;
}
公共类FacebookPluginAndroid{
私人活动语境;
私有共享对话框;
私人CallbackManager CallbackManager;
私人的喜欢喜欢喜欢喜欢喜欢;
public FacebookPluginAndroid(活动上下文){
this.context=上下文;
this.callbackManager=callbackManager.Factory.create();
}
公共无效共享(最终FacebookPluginListener FacebookPluginListener){
shareDialog=新建shareDialog(上下文);
shareDialog.setShouldFailOnDataError(true);
最终ShareLinkContent=新的ShareLinkContent.Builder()
.setContentUrl(Uri.parse(“https://www.facebook.com/SOME 网址“))
.build();
if(shareDialog.canShow(内容)){
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公开作废(共享结果){
System.out.println(“共享”+result.getPostId());
if(result.getPostId()!=null)
facebookPluginListener.getFacebookShareListener().onShareSuccess();
}
@凌驾
公开作废{
系统输出打印项次(“共享取消”);
}
@凌驾
公共无效onError(FaceBook例外e){
System.out.println(“共享错误”);
}
}, 121);
Gdx.app.postRunnable(新的Runnable(){
@凌驾
公开募捐{
显示(内容);
}
});
}
}
public void like(最终FacebookPluginListener FacebookPluginListener){
likeDialog=新的likeDialog(上下文);
final LikeContent content=new LikeContent.Builder()
.setObjectId(“https://www.facebook.com/SOMEURL")
.build();
if(如计算程序canShow(内容)){
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(如计算结果){
System.out.println(“like success!android like”+result.getData());
if(result.getData().getBoolean(“object_是_喜欢的”))
facebookPluginListener.getFacebookLikeListener().OnlikeSucces();
}
@凌驾
公开作废{
System.out.println(“像取消!像android”);
}
@凌驾
公共无效onError(FaceBook例外e){
System.out.println(“类似错误!类似android”);
}
}, 123);
Gdx.app.postRunnable(新的Runnable(){
@凌驾
公开募捐{
喜欢演艺节目(内容);
}
});
}
}
public CallbackManager getCallbackManager(){
返回callbackManager;
}

}

仅当用户使用Facebook登录到您的应用程序并已授权发布操作时,Post\u id响应才可用。如果存在,则这是已发布的开放图故事的ID


您需要添加
loginButton.setPublishPermissions(Arrays.asList(“发布操作”)

我的问题的解决方案是:在应用程序中更改facebook id。这个ID在facebook团队发送到评论后被更改(!!!),我没有注意到

更重要的是,如果您想共享您必须在应用程序LoginButton(来自facebook sdk)和ShareButton(始终来自facebook sdk)中使用的内容。在登录按钮中,您必须发送PeDuCka在上面写的权限。 如果您使用注册的回调管理器创建ShareDialog,则方法onSuccess(ShareDialog.Result)Result.getPostId()中的Result.getPostId()将始终为空,直到您在facebook配置页面上添加发布_操作的权限(团队必须查看[5天剩余时间]),并且您必须使用PeDuCKA代码对其进行测试。
在我看来,facebook的sdk是非常糟糕的。我见过的最糟糕的(许多相互矛盾的信息)。

你能展示你的FacebookPluginAndroid类吗?@NikoYuwono编辑:)所以我不能在没有登录按钮的情况下使用“喜欢”或“共享”?@taulus你如何使用共享?如果美国
 public void share(final FacebookPluginListener facebookPluginListener){
    shareDialog = new ShareDialog(context);

    final ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("https://www.facebook.com/SOME URL TO MY SITE"))
            .build();
    if(shareDialog.canShow(content)){
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                System.out.println("share SHARED " + result.getPostId());
                if(result.getPostId()!=null)
                    facebookPluginListener.getFacebookShareListener().onShareSuccess();
            }

            @Override
            public void onCancel() {
                System.out.println("share CANCEL");
            }

            @Override
            public void onError(FacebookException e) {
                System.out.println("share ERROR");
            }


        },121);

        Gdx.app.postRunnable(new Runnable() {
            @Override
            public void run() {
                shareDialog.show(content);
            }
        });
    }
}
public class FacebookPluginAndroid {
private Activity context;
private ShareDialog shareDialog;
private CallbackManager callbackManager;
private LikeDialog likeDialog;

public FacebookPluginAndroid(Activity context) {
    this.context = context;
    this.callbackManager = CallbackManager.Factory.create();
}

public void share(final FacebookPluginListener facebookPluginListener) {


    shareDialog = new ShareDialog(context);
    shareDialog.setShouldFailOnDataError(true);
    final ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("https://www.facebook.com/SOME URL"))
            .build();
    if (shareDialog.canShow(content)) {
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                System.out.println("share SHARED " + result.getPostId());
                if (result.getPostId() != null)
                    facebookPluginListener.getFacebookShareListener().onShareSuccess();
            }

            @Override
            public void onCancel() {
                System.out.println("share CANCEL");
            }

            @Override
            public void onError(FacebookException e) {
                System.out.println("share ERROR");
            }


        }, 121);

        Gdx.app.postRunnable(new Runnable() {
            @Override
            public void run() {
                shareDialog.show(content);
            }
        });
    }
}

public void like(final FacebookPluginListener facebookPluginListener) {
    likeDialog = new LikeDialog(context);
    final LikeContent content = new LikeContent.Builder()
            .setObjectId("https://www.facebook.com/SOMEURL")
            .build();


    if (likeDialog.canShow(content)) {
        likeDialog.registerCallback(callbackManager, new FacebookCallback<LikeDialog.Result>() {
            @Override
            public void onSuccess(LikeDialog.Result result) {
                System.out.println("like success! android LIKE" + result.getData());

                if (result.getData().getBoolean("object_is_liked"))
                    facebookPluginListener.getFacebookLikeListener().onLikeSuccess();
            }

            @Override
            public void onCancel() {
                System.out.println("like cancel! android LIKE");
            }

            @Override
            public void onError(FacebookException e) {
                System.out.println("like error! android LIKE");
            }


        }, 123);

        Gdx.app.postRunnable(new Runnable() {
            @Override
            public void run() {
                likeDialog.show(content);
            }
        });
    }
}

public CallbackManager getCallbackManager() {
    return callbackManager;
}