Android 如何在facebook sdk 4+;举个完美的例子

Android 如何在facebook sdk 4+;举个完美的例子,android,facebook,facebook-android-sdk,Android,Facebook,Facebook Android Sdk,我无法获得facebook sdk4+的发布许可。我面临问题,我发现没有合适的例子。如果有人有解决方案,请在这里发布。我发现每个人都可以看到旧版本的解决方案,但没有找到sdk4+的解决方案 LoginManager loginManager = LoginManager.getInstance(); loginManager.logInWithPublishPermissions(this, permissionNeeds); Log.e("publ

我无法获得facebook sdk4+的发布许可。我面临问题,我发现没有合适的例子。如果有人有解决方案,请在这里发布。我发现每个人都可以看到旧版本的解决方案,但没有找到sdk4+的解决方案

       LoginManager loginManager = LoginManager.getInstance();
        loginManager.logInWithPublishPermissions(this, permissionNeeds);
        Log.e("publish_action", "asking_for_permission");

        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>()
        {
            @Override
            public void onSuccess(LoginResult loginResult)
            {
                if (AccessToken.getCurrentAccessToken().getPermissions().contains("publish_actions"))
                {

                    Log.e("publish_action", "permission_activated");
                    Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                    try {
                        Log.e("publish_action", "permission_activated_inside_try");
                        SharePhoto photo = new SharePhoto.Builder()
                                .setBitmap(image)
                                .setCaption("A post from Android code")
                                .build();

                        SharePhotoContent content = new SharePhotoContent.Builder()
                                .addPhoto(photo)
                                .addPhoto(photo)
                                .addPhoto(photo)
                                .build();


                        ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
                            @Override
                            public void onSuccess(Sharer.Result result) {
                                Log.e("successfull", "photo_uploaded");
                            }

                            @Override
                            public void onCancel() {
                                Log.e("canceled", "photo_uploaded_cancled");
                            }

                            @Override
                            public void onError(FacebookException error) {
                                Log.e("error", "photo_upload_error");
                            }
                        });

                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

            }

            @Override
            public void onCancel() {
                System.out.println("onCancel");
                Log.e("publish_action", "cancel");
            }

            @Override
            public void onError(FacebookException exception) {
                Log.e("publish_action", "error = " + exception.getMessage());
                System.out.println("onError");
            }
        });
LoginManager LoginManager=LoginManager.getInstance();
loginManager.logInWithPublishPermissions(这是PermissionRequirements);
Log.e(“发布行动”、“请求许可”);
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback())
{
@凌驾
成功时公共无效(LoginResult LoginResult)
{
如果(AccessToken.getCurrentAccessToken().getPermissions()包含(“发布操作”))
{
Log.e(“发布操作”、“权限激活”);
位图image=BitmapFactory.decodeResource(getResources(),R.mipmap.ic_启动器);
试一试{
Log.e(“发布操作”、“权限激活”、“内部尝试”);
SharePhoto photo=新建SharePhoto.Builder()
.setBitmap(图像)
.setCaption(“来自Android代码的帖子”)
.build();
SharePhotoContent内容=新的SharePhotoContent.Builder()
.addPhoto(照片)
.addPhoto(照片)
.addPhoto(照片)
.build();
ShareApi.share(内容,新FacebookCallback(){
@凌驾
成功时公开作废(共享结果){
Log.e(“成功”,“上传照片”);
}
@凌驾
公开作废{
Log.e(“已取消”、“照片已上传”、“取消”);
}
@凌驾
public void onError(facebook异常错误){
Log.e(“错误”、“照片上传错误”);
}
});
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
@凌驾
公开作废{
System.out.println(“onCancel”);
Log.e(“发布动作”、“取消”);
}
@凌驾
public void onError(facebook异常){
Log.e(“publish_action”,“error=“+exception.getMessage());
System.out.println(“onError”);
}
});

我发现了这个,你必须试试这个url。这是一个完美的演示,可以发布到facebokk的操作权限。这对我很有帮助。

我也遇到了同样的问题,解决方案是

if (!AccessToken.getCurrentAccessToken().getPermissions().contains("PERMISSION_THAT_YOU_NEED")) {
        LoginManager.getInstance().logInWithPublishPermissions((Activity) viewInterface.getContext(), Arrays.asList("PERMISSION_THAT_YOU_NEED"));
        return;
您需要在使用logInWithPublishPermissions()后返回,因为用户可能不允许您使用它,但您的代码将继续运行。若用户提供对此权限的访问权限,则下次代码将成功完成

试试这个,希望对你有帮助