【问题标题】:Android - grant facebook permission issuesAndroid - 授予 facebook 权限问题
【发布时间】:2016-02-03 18:22:37
【问题描述】:

我正在从事需要发布一些文章的项目,我很难找到未经许可发布一些文本的方法,但我失败了,然后我决定授予 publish_actions,我遇到了这个错误

您需要使用列出的任何帐户在您的应用中测试此权限 在 Roles 中,您可以提交审核。你好像没有 测试了此权限,因为没有针对任何 API 请求 过去 30 天内的 publish_actions。

搜索后我发现我必须先测试此权限才能授予它

List<String> mReadPermissions = Arrays.asList("email", "public_profile", "user_friends");
    List<String> mPublishPermissions = Arrays.asList("publish_actions");

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "onCreate");
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();


          _loginfb.setReadPermissions(mReadPermissions);
        _loginfb.setPublishPermissions(mPublishPermissions);
        _loginfb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                final Bundle params = new Bundle();
                params.putString("fields", "id, email, name, picture.type(large)");

                System.out.println("Success callback");
                GraphRequest mRequest = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject json, GraphResponse response) {
                                if (response.getError() != null) {
                                    // handle error
                                    Log.i(TAG, "ERROR");
                                } else {
                                    Log.i(TAG, "Success");
                                    String jsonresult = String.valueOf(json);
                                    Log.i("JSON Result", jsonresult);

                                    LoginWithFB(json);
                                }
                            }
                        });
                mRequest.setParameters(params);
                mRequest.executeAsync();

            }

            @Override
            public void onCancel() {

            }
        @Override
        public void onError(FacebookException error) {

        }
    });

但我得到了这个错误

在 setReadPermissions 之后无法调用 setPublishPermissions 调用。

任何人都可以指导我如何授予我正在使用 facebook sdk 4 的步骤

【问题讨论】:

    标签: android facebook


    【解决方案1】:

    正如facebook docs 中所述,您不能将publishPermissionreadPermission 一起使用Facebook dev doc

    根据文档的

    LoginButton 只能与读取权限或 发布权限,但不能同时发布。同时调用 setReadPermissions 和 在同一 LoginButton 实例上的 setPublishPermissions 将导致 除非调用 clearPermissions,否则抛出异常 之间。

    所以在成功登录并从Graph api 得到响应后调用loginbutton.clearPermissions(); 设置PublishPermission

    代码:

    _loginfb=(LoginButton)findViewById(R.id.fblogin);
    
        _loginfb.setReadPermissions(mReadPermissions);
    
        _loginfb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
    
                final Bundle params = new Bundle();
                params.putString("fields", "id, email, name, picture.type(large)");
    
                System.out.println("Success callback");
                GraphRequest mRequest = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject json, GraphResponse response) {
                                _loginfb.clearPermissions();
                                _loginfb.setPublishPermissions(mPublishPermissions);
                                if (response.getError() != null) {
                                    // handle error
    
                                } else {
    
                                    String jsonresult = String.valueOf(json);
    
    
    
                                }
                            }
                        });
                mRequest.setParameters(params);
                mRequest.executeAsync();
    
            }
    
            @Override
            public void onCancel() {
    
            }
    
    
        @Override
        public void onError(FacebookException error) {
            // TODO Auto-generated method stub
            System.out.println(error);
        }
    });
    

    【讨论】:

    • 我只需要请求发布文章的发布权限,但我不能让您使用快照代码执行此功能
    • @MinaFawzy 请检查我的更新答案,在成功登录并获取用户信息作为响应后,致电clearPermissions() 设置PublishPermissions,即onCompleted
    • 谢谢,这解决了我的问题,但我仍然有这个红色警报
    • 欢迎您,请通过 Roles 中提到的帐户登录,从您的应用发布任何帖子,请通过此链接查看developers.facebook.com/docs/facebook-login/review/…
    • 谢谢队友,如果可以的话,请分享我如何将任何文本发布到墙上的示例代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2015-07-24
    • 2020-06-16
    • 2021-02-20
    相关资源
    最近更新 更多