然后我尝试向用户“manage_pages”请求额外的权限,但我仍然得到需要扩展权限:manage_pages

Posted

技术标签:

【中文标题】然后我尝试向用户“manage_pages”请求额外的权限,但我仍然得到需要扩展权限:manage_pages【英文标题】:I then tried to ask additional permission from the user "manage_pages" but I still get Require extended permission: manage_pages 【发布时间】:2014-08-15 22:49:16 【问题描述】:

我曾尝试通过我的 android 应用程序进行 FB 操作

用户必须使用 FB 登录。

但我在 FB 响应中收到此错误:

Response:  responseCode: 400, graphObject: null, error: HttpStatus: 400, errorCode: 283, errorType: OAuthException, errorMessage: (#283) Require extended permission: manage_pages, isFromCache:false

为什么仍然需要“manage_pages”权限? 我是帖子所在页面的管理员。

然后我尝试向用户“manage_pages”请求额外的权限

但我仍然遇到同样的错误。

private void onSessionStateChange(Session session, SessionState state,
            Exception exception) 
        List<String> permissions = session.getPermissions();
        if (permissions.size() > 0 && !permissions.contains("publish_actions")) 
            requestPublishPermissions(this, session,
                    Arrays.asList("publish_actions", "manage_pages"),
                    PublicMacros.REQUEST_CODE_PUBLISH_PERMISSIONS);
        

    public static void requestPublishPermissions(Activity activity,
            Session session, List<String> permissions, int requestCode) 
        if (session != null) 
            Session.NewPermissionsRequest reauthRequest = new Session.NewPermissionsRequest(
                    activity, permissions).setRequestCode(requestCode);
            session.requestNewPublishPermissions(reauthRequest);
        
    

这是FB喜欢的代码:

Request request = new Request(
                            session,
                            takeFromPublicMacrosOrServer(currentOffer.fbPostId)
                                    + "/likes", null, HttpMethod.POST,
                            new Request.Callback() 

                                @Override
                                public void onCompleted(Response response) 
                                    // Request complete
                                    if (response.getError() == null) 
                                        UnlockRequestToServer unlockRequestToServer = new UnlockRequestToServer(
                                                mOffersListActivity,
                                                PublicMacros.TYPE_UNLOCK_FB_LIKE,
                                                currentOffer.fbPostId);

                                        // (4) unlock 4 - skip
                                        sendUnlockRequestToServer(
                                                unlockRequestToServer,
                                                currentLockView);
                                     else 
                                        final String errorMsg = "error: "
                                                + response.getError()
                                                        .toString();
                                        Log.e(MyLogger.TAG, errorMsg);
                                        if (BaseApplication
                                                .getCurrentActivity() != null) 
                                            BaseApplication
                                                    .getCurrentActivity()
                                                    .runOnUiThread(
                                                            new Runnable() 
                                                                public void run() 
                                                                    if (PublicMacros.DEBUG) 
                                                                        Toast.makeText(
                                                                                BaseApplication
                                                                                        .getCurrentActivity(),
                                                                                errorMsg,
                                                                                Toast.LENGTH_LONG)
                                                                                .show();
                                                                    
                                                                
                                                            );
                                        
                                    
                                    String re = response.toString();
                                
                            );
                    request.executeAsync();
                

【问题讨论】:

【参考方案1】:

如果您使用的是 Graph API v2.0 或更高版本,如果您使用 manage_pages 等扩展权限,您的应用需要经过审核才能与应用管理员或开发人员以外的其他用户一起使用。

我怀疑这是你的问题。

在这里看看我的回答:Facebook me/feed can only post on developers account only

【讨论】:

我会阅读您的链接。但即使在此之前:为什么仍然需要“manage_pages”权限?我是帖子所在页面的管理员。 你没有详细描述你想做什么。 “做一个FB喜欢”是什么意思?一个页面,一个 URL,一个对象?您不能通过 Graph API 喜欢 Pages,所以无论如何这都是死胡同。而对于其他类型的点赞,user_likes 权限就足够了。 我尝试在 FB 页面中对 FB 帖子点赞。抱歉不清楚。我以为I'm an Admin of page in which the post exist.中提到过 那么为什么FB会抛出这个错误呢?在什么条件下。我没有尝试修改 FB 页面。只需对其中的帖子进行“FB 赞”即可。 你没有在你想发布的地方显示代码。这没有多大意义。点赞帖子不需要manage_pages 权限,因此错误不太可能是您发布的代码引起的。

以上是关于然后我尝试向用户“manage_pages”请求额外的权限,但我仍然得到需要扩展权限:manage_pages的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 开发上获得 Facebook manage_pages 的权限?

Facebook App Review - 如何让 FB 审阅者测试 manage_pages 权限?

在具有 C# /me/accounts 和 manage_pages 权限的 Facebook 中不显示任何页面

Graph Api:作为用户发布到我的页面提要,而不是作为页面

测试应用程序上的 Facebook 无效范围错误

如何通过反应以快递方式向mailchimp发送发布请求