为 Discourse 配置 Facebook 登录

:exclamation: As of February 2023, Meta has implemented a business verification requirement when publishing new and existing apps.

:warning: Updating the Facebook app API or creating a new app will break existing logins. See troubleshooting at the bottom of this post for a solution.

Configuration

Go to developers.facebook.com/apps and …

  1. Login with the credentials of the account you want to connect to Discourse and follow the wizard.
    If you already have other apps instead of Get Started you will see the entry My Apps, then just click on :heavy_plus_sign: Add new app and follow the guide from step 1b

1a. Select Developer
 ![image|690x408,50%](upload://aps07RfPhmhHIHyMqO3RZkbnKaX.png) 
1b. Provide a name for the app, for example `Discourse Login` and click on <kbd>Next</kbd>.
 ![image|690x435,50%](upload://bqzuaZ5sdnGEdaWWtUqvv9zO6qU.png) 
1c. Click on <kbd>Add your first product</kbd>
 ![image|690x352](upload://8VWUUU5YYXsCVOC2GrhJb3bJbmj.png)
  1. Click Set Up below Facebook Login.
    firefox_2018-03-14_17-08-49

  2. From the menu on the left, exit Quickstart by clicking on Settings under Facebook Login

  3. Setup the Valid OAuth redirect URI field, entering https://discourse.example.com/auth/facebook/callback – obviously, replacing the domain with your site’s actual domain name and matching the HTTPS protocol. Remember that the HTTPS protocol is now mandatory for all URI redirects. Click Save Changes.
    Once completed, a successful setup should look like this in Products/Facebook Login/Settings:

  4. Navigate to Settings/Basic, enter your Discourse URL (https://discourse.example.com) in the App Domains field and also enter the URL for your Discourse site privacy policy and Terms of Service in the appropriate fields and also upload the icon of your site. (Mind that for your privacy and tos link to be verified, you should have a valid SSL certificate integrates, which is not self-signed. If the certificate is missing, or self-signed, you won’t be able to save your changes).
    If you have a company that does business in the European Union, you may want to fill in the Data Protection Officer Contact Information form before clicking on Save Changes.

    ⚠️ Facebook has changed this step to ask for extra information. We are currently working to determine what you need to provide; see recent replies. (November 2020)

    There is now a field for User Data Deletion information for GDPR compliance. Select “Data Deletion Instructions URL” from the dropdown and add a link to a page (such as https://discourse.example.com/tos#deletion) which contains a sentence like “Accounts on this site can be anonymized or deleted at the user’s request. Contact our @support group for details.”

  5. At the bottom of the page click on :heavy_plus_sign: Add Platform and select Website

  6. Enter your Discourse URL here, for example https://discourse.example.com and click Save Changes

  7. Click on the Status button to change your app from in development to public.


    The category you select does not matter.

    After a few seconds the button will become:
    firefox_2018-03-14_18-20-25

  8. In Discourse site settings, enter your Facebook app’s App ID and App Secret in the facebook app id and facebook app secret fields. You’ll also want to check off Enable Facebook authentication, requires facebook_app_id and facebook_app_secret

That’s it! Facebook login should work now. Be sure to test it from a “normal” Facebook account, not your developer account.

Troubleshooting

Hosted Customers

:discourse2: If you are a Discourse hosting customer, contact us via the email address on your site dashboard and we will be happy to assist. :+1: :slightly_smiling_face:

If you’re hosted by another provider you will need to contact them for any server-related tasks or issues.

Self-hosters

If the Facebook app API is updated, or the app ID/secret are changed, you’ll need to remove existing associations from your site before users can log in again. To remove this data, run the following:

cd /var/discourse
./launcher enter app
rails c
UserAssociatedAccount.where(provider_name: "facebook").delete_all

Last edited by @martin 2024-06-11T07:00:30Z

Check documentPerform check on document:
77 个赞

我认为随着品牌重塑为“Meta”,配置此项的流程发生了一些变化。以下是操作指南:

1a. 点击“新建应用”后

Consumer 似乎是最佳选择,它提供了一组不错的有限选项,包含了我们所需的一切。

结束时 - 高级访问权限

现在似乎需要请求访问 Facebook 用户电子邮件地址的“高级访问权限”。这似乎只需要点击几下即可自动授予。但是,在它出现之前,我花了一些时间才找到它。

此外,似乎还需要在一个月左右的时间内审查访问权限。总而言之,这比设置其他 OAuth 登录要麻烦得多。

6 个赞

终于能够配置 Facebook 登录作为用户注册方式了(我原来的应用在 Facebook 更新了 GDPR 合规性后停止工作了)。对于感兴趣的人,请在 Facebook 中创建一个全新的应用,除了第一篇帖子中提到的步骤外,您还需要在 Facebook 应用开发者页面上执行以下步骤:

App ReviewPermissions and Features

  • public_profile → 点击 Get Advanced Access → 按照说明操作
  • email → 点击 Get Advanced Access → 按照说明操作

现在您的用户应该可以使用 Facebook 注册,并且他们应该会收到已订阅帖子的电子邮件通知。

3 个赞

我已经放弃了 Facebook 登录集成。这些人要么是机器人,要么根本不花时间阅读。这是他们第二次提到我的隐私政策违反了他们的规定。第一次我解决了。现在问题又回来了。

在我反复强调我的 隐私政策 完全符合他们的要求后,他们的反应是这样的。

你好,

感谢您就您的应用程序与我们联系。

您的应用程序链接的隐私政策必须符合 Facebook 平台政策 4.b:

此政策规定,您必须包含以下所有内容:

  • 收集和处理数据的清晰说明(已完成)
  • 收集和处理数据的目的(已完成)
  • 用户如何请求删除数据(待定 - 删除帐户或内容与用户可以请求数据删除不相似。您可以更改您的句子,使其符合平台条款 4.b)

有关我们隐私政策要求的更多信息,请访问 Facebook 平台条款的第四部分:https://developers.facebook.com/terms/dfc_platform_terms/

感谢您的合作。当您的应用程序更新后或对此请求有任何疑问,请回复此电子邮件。

Facebook

同时,我分享了一张截图,其中清楚地描述了用户如何请求删除数据以及是什么类型的数据。


总之,我现在最想知道的是这个。那些使用 Facebook 登录的人,他们仍然可以使用用户名/密码组合登录吗?还是说我失去了那些用户?

1 个赞

如果他们之前没有设置密码,他们将需要请求重置电子邮件,但是的,他们可以使用密码登录。我们刚刚在我们的论坛上经历过这个问题,原因也一样。

4 个赞

我的默认服务条款中没有#删除部分 :frowning:

如果我手动创建该部分,应该添加什么内容?

1 个赞

我已尽最大努力更新我们的隐私政策以符合他们的评论:Privacy - TZM Forum

起初还算可以,但一两个月后,他们又带着同样的抱怨回来了。不知何故,任何修改都不够,所以他们停用了该应用程序。之后我将其删除,生活太短暂,不值得与 Facebook(机器人)争论。

6 个赞

在进行年度体检时,Facebook 无法加载我的 Discourse。它们卡在加载屏幕上。
论坛在我这边运行良好,并且有已连接的用户。

(https://unicyclist.com)。

我告诉他们再试一次,他们又告诉我他们无法加载页面。

所以,他们……

恳请您提供一个屏幕录像,其中还包括以下项目:

  1. 您的应用名称、应用 ID 和应用图标。

  2. 您的完整 Facebook 登录流程(如果您已实施 Facebook 登录,请显示应用用户找到 Facebook 登录按钮)。

  3. 您的应用的帐户创建和登录流程,如果您的应用用户可以在不使用 Facebook 登录的情况下创建帐户并登录您的应用。

  4. 对于您的应用有权访问的每一项权限,请显示应用用户访问需要该权限的数据,以及您的应用如何使用这些数据。

  5. 一个 Facebook 登录流程,显示当应用用户拒绝您的应用请求的权限时会发生什么。

  6. 您的隐私政策在您的应用中的位置。点击您的隐私政策链接以显示您的政策内容。

  7. 您应用中的内容。

  8. 社交插件(如有)及其使用方式。例如,点赞或关注主页、在 Facebook 上分享内容或邀请或标记朋友。如果您的应用适用于不同平台(Connect、iOS、Android、Canvas…),请确保显示上述所有信息,适用于列出的平台。

Meta 如此难以合作,我可能干脆从我的论坛中移除他们所有的功能,这些功能是 Facebook 登录和 Instagram(有点奇怪)嵌入式 iframe(我怀念 旧的 onebox)。
我甚至无法预览在主题中发布的 Facebook 链接(也许是因为这个 无法解析的东西)。

我不确定这些功能是否值得费心。


编辑:一位管理 Discourse 论坛的朋友收到了来自 Facebook 的相同电子邮件,并想知道他们有多少用户实际上拥有已链接的 Facebook 帐户。
您可以使用 数据浏览器 中的这些查询来获取在过去一年中至少发布过一次且拥有已链接 Facebook 帐户的用户数量:

SELECT count(*)
FROM users
LEFT JOIN user_associated_accounts ON user_id = users.id
WHERE last_posted_at > now() - '1 year'::interval
AND provider_name = 'facebook'

如果您想与所有用户进行比较:

SELECT count(*)
FROM users
WHERE last_posted_at > now() - '1 year'::interval

在我的论坛上,过去一年有 411 名用户至少发布过一次,其中 30 名拥有已链接的 Facebook 帐户。但这并不意味着他们会使用它。


编辑:完成了,我已经禁用了我论坛上的 Facebook 功能。我以为也许会是一种损失,但宣布它却为我赢得了许多点赞 :laughing:。看来我的社区对 Facebook 并不特别喜欢……

6 个赞

更改论坛服务器后,我和我的用户无法使用 Facebook 登录来发表言论,出现了以下错误:

抱歉,授权您的帐户时出错。请重试。

有人知道为什么会这样以及如何修复吗?

您的论坛有相同的网址吗?

1 个赞

我一路走到了“公开”这一步,然后就卡住了……

需要进行业务验证才能上线

在您上线之前,应用管理员必须完成业务验证。一旦您的企业账户通过验证,您就可以返回此页面并上线。了解有关业务验证的更多信息。

由于我没有合法注册的公司,业务验证对我来说是遥不可及的:

我在网上搜索了一下,发现这个变化发生在 3 个月前,也就是 2023 年 2 月:

我猜我彻底完蛋了。对我来说,忘掉 Facebook 登录吧。现在小型、非正式的网站都被禁止进入这个平台了。 :neutral_face: :disappointed:

3 个赞

这是关于我发现的roadblock的更多信息。

Graph API文档:

email

此权限或功能仅在经过业务验证后才可用。

public_profile

此权限或功能仅在经过业务验证后才可用。

2 个赞

我收到了一封 Facebook 开发者邮件,说我将失去对我的应用程序的访问权限(据我所知,该应用程序用于 FB 登录和 Instagram oneboxing),除非我完成企业认证。

我的实例只是一个爱好,绝不会赚取足够的利润来证明其为企业。只是想知道其他人打算如何应对这个问题?!

3 个赞

是让用户换一种方式登录?烤些饼干,送到马克·扎克伯格家门口,然后跪着献上?

说真的,我认为这是尽头了。除了 Facebook 自己,没有人能控制 Facebook 的网站 API。这不是一个可以通过“创意”或“工程技巧”来“解决”的问题。

抱歉带来坏消息 :disappointed_face:

1 个赞

所以,为了弄清楚,有没有办法在没有经过验证的企业的情况下使用“使用 Facebook 登录”?

对此进行澄清,这是否意味着用户数据将被删除并为 Discourse 创建新用户,还是意味着用户下次登录时需要重新进行身份验证(提供共享信息的权限)?

“那么,为了弄清楚,有没有办法在没有经过验证的企业的情况下使用“使用 Facebook 登录”?
据我所知,没有。

1 个赞

是否有人收到过 Meta 的这封电子邮件?

看起来去年有些人遇到了这个问题,也许现在轮到我了。我不是企业,那么这是否意味着我以后需要移除通过 Meta 登录的功能?

完成 X 社区的数据使用检查

保护用户隐私是 Meta 和在其平台上进行开发的开发者的重中之重。因此,我们要求每年进行一次检查,以确保您的 API 访问和数据使用符合 Meta 的政策。了解更多。

在 2024 年 5 月 30 日之前,您需要为 X 社区完成以下操作,以维持 API 访问并避免限制:

  1. 检查您先前已批准或添加的权限和功能。
  2. 认证此应用遵循允许的用法。
  3. 认证您遵守Meta 平台条款开发者政策以及所有其他适用的条款和政策。
  4. 回答有关您数据处理实践的问题。了解我们的数据处理指南。

数据使用检查是应用管理员每年必须完成一次的要求。
确保每个应用都已连接到经过验证的企业—这是提交数据使用检查的前提条件。

1 个赞

是的,这正是它的意思。

谢谢您,先生。

我现在需要梳理一下需要在配置中进行哪些更改。总是会有一些事情需要处理,不是吗?:grinning_face_with_smiling_eyes: