You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Facebook OAuth认证异常:非开发用户跳转「功能不可用」页面求助

Facebook OAuth集成问题排查

我们已将Facebook OAuth集成至应用注册流程,用于验证新申请者身份并获取其社交平台信息存储审核,审核通过后方可授予应用全权限。

具体流程说明

前端授权链接

前端提供的Facebook授权链接:
https://www.facebook.com/v22.0/dialog/oauth?client_id={our_id}&redirect_uri=https%3A%2F%2F{our_url}%2Foauth%2Ffacebook%2Fcallback&scope=email%2Cpublic_profile%2Cpages_show_list%2Cpages_read_engagement&state=${encodedState}

回调URL执行操作

授权成功后,回调URL依次执行以下操作:

  1. 通过code获取Facebook access token
public InstagramTokenResponse getFacebookAccessToken(String code, String redirectUrl) throws Exception {
        URI uri = new URI(String.format("https://graph.facebook.com" + "/v22.0/oauth/access_token?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s", facebookClientId, redirectUrl, facebookClientSecret, code));
        log.info("Getting facebook access token " + uri.toString());
        return restTemplate.getForObject(uri, InstagramTokenResponse.class);
    }
  1. 使用access token获取用户详情
public FacebookUserDataResponse getFacebookUser(String accessToken) throws Exception {
        URI uri = new URI(String.format("https://graph.facebook.com" + "/v22.0/me?fields=id,name,email&access_token=%s", accessToken));
        log.info("Getting facebook user " + uri.toString());
        return restTemplate.getForObject(uri, FacebookUserDataResponse.class);
    }
  1. 获取Facebook页面数据估算粉丝数
try {
            facebookPagesResponse = oAuthServiceClient.getFacebookPages(facebookUserAccessToken);

            for (FacebookPage page : facebookPagesResponse.getData()) {
                String pageAccessToken = page.getAccess_token();
                String pageId = page.getId();
                FacebookPageDetails pageDetails = oAuthServiceClient.getFacebookPageDetails(pageId, pageAccessToken);
                followerCount += pageDetails.getFan_count();
            }
        } catch (Exception e) {
            LOG.info("OAuth failed to get facebook pages or their information");
        }

客户端获取Facebook页面及详情代码

public FacebookPagesResponse getFacebookPages(String accessToken) throws Exception {
        URI uri = new URI(String.format("https://graph.facebook.com" + "/me/accounts?access_token=%s", accessToken));
        log.info("Getting facebook pages " + uri.toString());
        return restTemplate.getForObject(uri, FacebookPagesResponse.class);
    }

    public FacebookPageDetails getFacebookPageDetails(String pageId, String pageAccessToken) throws Exception {
        URI uri = new URI(String.format("https://graph.facebook.com" + "/%s?fields=name,fan_count&access_token=%s", pageId, pageAccessToken));
        log.info("Getting facebook page details " + uri.toString());
        return restTemplate.getForObject(uri, FacebookPageDetails.class);
    }

当前问题与疑问

我们已获得pages_read_engagement和instagram_basic权限,应用已验证并上线。但非开发团队用户使用该流程时,始终无法完成认证,直接跳转至「Feature Unavailable」页面,从未进入回调URL。内部测试无此问题,猜测是否需要将应用转为Facebook商业类型应用?

内容的提问来源于stack exchange,提问作者Kristian Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:08:10