【问题标题】:Using Facebook SDK in Android, requestNewPublishPermissions always deny my publish_actions permission在 Android 中使用 Facebook SDK,requestNewPublishPermissions 总是拒绝我的 publish_actions 权限
【发布时间】:2014-11-06 16:40:16
【问题描述】:

我正在尝试通过 Facebook SDK 共享来自 Android 的照片,但是当我尝试请求已打开会话的 publish_actions 权限时,Facebook 以拒绝的权限返回,没有显示询问您是否代表发布的屏幕。这是为什么?我该如何解决? 顺便说一句,我在日志中没有收到任何错误或错误。

这是我的代码:

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
public void onShareFacebook() {
    progressDialog.show();
    Session session = Session.getActiveSession();
    if (session == null || !session.isOpened()){
        LoginButton loginFacebookButton = new LoginButton(this);
        loginFacebookButton.setPublishPermissions(PERMISSIONS);
        loginFacebookButton.performClick();
        pendingShare = true;
    }
    else if (session != null && session.isOpened()){
        facebookSharePhoto();
    }
}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        if (pendingPublishReauthorization && 
                state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
            pendingPublishReauthorization = false;
            onShareFacebook();
        }
        else if (pendingShare){
            onShareFacebook();
        }
    } 
}

private void facebookSharePhoto(){
    pendingShare = false;

    Bitmap screenshotImage = takeScreenShot();
    String message = invokeEvent.name;

    postPhoto(screenshotImage, message, callbackShareFacebook);
}

private void postPhoto(Bitmap image, String message, Request.Callback callback) {
    Session session = Session.getActiveSession();

    if (session != null){

        // Check for publish permissions    
        List<String> permissions = session.getPermissions();
        List<String> permissionsd = session.getDeclinedPermissions();
        if (isSubsetOf(permissionsd, PERMISSIONS)){
            Toast.makeText(this, "Permisos denegados", Toast.LENGTH_SHORT).show();
            onBackPressed();
            return;
        }
        if (!isSubsetOf(PERMISSIONS, permissions)) {
            pendingPublishReauthorization = true;
            Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
            session.requestNewPublishPermissions(newPermissionsRequest);
            return;
        }

        Bundle postParams = new Bundle();
        postParams.putString("name", message);


        Log.d(TAG, "inicio getImageAsData");
        postParams.putByteArray("picture", getImageAsData(image));
        Log.d(TAG, "fin getImageAsData");

        Request request = new Request(session, "me/photos", postParams, HttpMethod.POST, callback);
        Request.executeBatchAsync(request);

    }

}

一开始我调用函数:

            session.requestNewPublishPermissions(newPermissionsRequest);

但是当回调返回时,会话的“publish_actions”权限在此处被拒绝:

        List<String> permissionsd = session.getDeclinedPermissions();
        if (isSubsetOf(permissionsd, PERMISSIONS)){
            Toast.makeText(this, "Permisos denegados", Toast.LENGTH_SHORT).show();
            onBackPressed();
            return;
        }

【问题讨论】:

    标签: android facebook-login facebook-android-sdk android-facebook android-sharing


    【解决方案1】:

    我注意到,当我使用在 Facebook 上创建应用程序的帐户登录 Facebook 时,不会发生这种情况。这意味着,如果我不是 Facebook 应用程序的开发人员/测试人员,则不会出现要求发布权限的弹出窗口。

    您是否激活“对公众可用”的切换按钮并不重要。在您提交 Facebook 申请以供审核(“开始提交”按钮)之前,该应用将无法向公众开放。

    我提到的两个按钮的屏幕截图:

    解决方案:为您的应用开始提交或将 Facebook 帐户添加到您的应用的测试员角色。

    【讨论】:

    • 我有同样的问题,但你能告诉我如何将应用程序提交到 facebook。 ?因为我的应用太大了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2018-10-13
    • 2014-07-26
    相关资源
    最近更新 更多