Facebook JS SDK - 企业登录(SUAT)

问题描述 投票:0回答:1

提供的 Facebook 登录 JS SDK 通过“Facebook 企业登录”与用户登录(用户访问令牌又名 UAT)流程配合使用,但不适用于企业登录(系统用户访问令牌又名 SUAT)。

Facebook Login for Business configuration

我们目前使用用户访问令牌登录流程,因为它成功打开了 Facebook 登录弹出窗口,并在成功进行身份验证和授权后返回访问令牌。但是,我们希望使用系统用户访问令牌来使用不会过期的令牌,并将令牌附加到业务而不是用户。

我尝试遵循以下文档,但没有成功。

Facebook 企业登录 - 调用登录对话框

此代码在 Angular 应用程序中使用,但我能够毫无问题地使用 SDK。

工作用户 (UAT) 流程

此流程使用 UAT 配置 ID。这使用连接到企业帐户的 FB 个人资料。登录对话框工作正常,我可以完成流程并检索必要的令牌,以便与我们的后端服务器交换它。

<!-- FB SDK in index.html -->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
...
FB.init({
  appId: [Facebook App ID],
  version: 'v15.0',
  cookie: true,
});

...

FB.login(async (response: StatusResponse) => {
  // login logic goes here...
}, {
  config_id: [User Login config ID],
  auth_type: 'reauthenticate' // "rerequest" & "reauthorize" works as well...
}

Working Facebook Login popup

非工作业务 (SUAT) 流程

但是,当我们尝试使用 SUAT 配置 ID 时,登录会以两种不同的方式中断。第一个示例显示了成功通过 Facebook 进行身份验证后的错误消息。

FB.login(async (response: StatusResponse) => {
  // login logic goes here...
}, {
  config_id: [Business Login config ID],
  auth_type: 'reauthenticate' // "rerequest" & "reauthorize" will also give the same error page.
}

Facebook -

然后,当我们尝试使用其文档中提到的

auth_type
code 时,FB 登录弹出窗口完全中断,并显示一条不同的消息。尽管他们的文档中特别提到了
auth_type
code,但我发现很奇怪的是 Facebook JS SDK 的 Definitely Typed Repo 没有将 code 作为他们选择的一部分。所以我手动将 'code' 添加到
auth_type
选项中。

FB.login(async (response: StatusResponse) => {
  // login logic goes here...
}, {
  config_id: [Business Login config ID],
  auth_type: 'code',
  override_default_response_type: true,
}

Facebook -

两种配置中定义的所有范围均已获得高级权限批准。我已经尝试了上述设置的许多不同配置(API 版本、auth_types 等),但似乎只有 UAT 配置适用于 FB JS SDK。

我注意到在过去的几个月里有更多关于这个问题的搜索结果。自 2023 年 1 月以来,我们一直在处理这个问题。如果有人有解决方法或建议,我们将不胜感激!

javascript angular typescript facebook facebook-javascript-sdk
1个回答
0
投票

有运气吗?我使用与 SUAT 的“代码”相同的响应类型,但经过几步后,它说哎呀出了问题。不知道问题所在

© www.soinside.com 2019 - 2024. All rights reserved.