使用 Cognito 登录 Facebook 会重定向到 URL,但出现错误
Login with Facebook using Cognito is redirecting to URL with an error
我创建了一个用户投票并将 Facebook 连接到它。这是它在 AWS 控制台中的样子。
我也已将 email
设置为注册所需的属性。
但是,当我访问我的托管登录页面并单击 继续使用 Facebook 时,我被重定向回我的页面 URL
http://localhost:4200/#error_description=attributes%20required:%20[email]&error=invalid_request
为什么会这样?我已按照所有说明进行操作,并将 email
作为范围包括在内。我期待 URL 中的 access_token
。
请帮忙。谢谢!
错误消息说电子邮件地址是必需的,这表明电子邮件是您的用户池中的必需属性。您通过包含 "email" 范围做了正确的事情,但您还必须通过将 facebook 电子邮件映射到 Cognito 电子邮件属性,在 Amazon Cognito 控制台中包含提供商(在您的情况下为 Facebook)的属性映射。请试一试,让我们知道它是否有效。
导致我出现此问题的原因是我向 Facebook 请求了一个不存在的属性。就我而言:
picture.size(large) # This does not exists and will cause errors
然后 Facebook 向 Cognito 响应一个错误,而 Cognito 只是告诉您所需的属性电子邮件不在请求中。因此,如果您收到此错误消息,问题很可能与电子邮件无关,而是其他设置错误,因此您会收到 invalid request
我遇到了类似的问题,但我的错误响应中列出了更多属性:
#error_description=attributes+required%3A+[name%2C+family_name%2C+email%2C+address]&error=invalid_request
您可以在 URL 中的错误消息中看到所需的属性与我在 AWS Cognito 用户池中拥有的所需属性相匹配。
由于无法修改已创建的用户池的属性,我不得不创建一个新的,这些字段为空,如下所示。
保存此新用户池中的更改后,我在 Facebook 开发门户中更新了此新用户池使用的域,我不再收到该错误。
我已经通过为我的应用程序创建一个帐户来解决这个错误。然后进入 facebook,进入应用程序的设置并告诉它不允许发送电子邮件。奇怪的是,cognito 似乎不知道要再次请求电子邮件。我能够通过访问 (https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname%2Cemail&version=v6.0) 并再次请求令牌来读取设置。它导致弹出窗口说我的应用程序正在请求我的电子邮件。一旦我接受,设置就会回到 facebook 设置中,并且该应用程序可以正常运行。不知道Cognito是不是太笨了,在索取资料的时候又重新请求了示波器。
实际上,有两种方法可以消除这个错误:
#error_description=attributes%20required:%20[email]&error=invalid_request
1st : 您必须通过转到 facebook 下的 settings and privacy > General > contact
将您的电子邮件设为 facebook 的主要联系人。这是最可行的步骤,因为当您已经设置了无法覆盖的 Cognito 用户池时,您会收到此错误。
2nd : 在设置身份验证和创建用户池期间,删除电子邮件作为必需属性。
永远记住,用户池的这些配置不能被覆盖,如果您需要电子邮件作为必需属性或更改任何其他设置,您将需要删除现有用户池并重新创建它。因此,在创建用户池之前,您必须确定所需的配置。
我遇到了同样的错误,我通过检查隐式选项解决了这个错误。
给你...
我遇到过类似的问题,但是有 google 身份验证希望这个答案可以帮助别人,
解决方案是我们需要在身份提供者下提供所有必要的授权范围,
name attribute is available under profile scope
这样 cognito 就会将这些字段(例如:电子邮件、姓名等)从社交帐户映射到您在创建用户池开始时定义的用户池属性(姓名、电子邮件等)。
我遇到了类似的错误。
error_description=attributes%20required%3A%20%5Bemail%5D&error=invalid_request#=
我通过在我的 Facebook 开发者帐户中授予对电子邮件的“高级访问权限”来解决这个问题。
您可以在“Facebook 开发者应用面板 -> 应用名称 -> 应用评论 - 我的权限和功能”中找到它
我创建了一个用户投票并将 Facebook 连接到它。这是它在 AWS 控制台中的样子。
我也已将 email
设置为注册所需的属性。
但是,当我访问我的托管登录页面并单击 继续使用 Facebook 时,我被重定向回我的页面 URL
http://localhost:4200/#error_description=attributes%20required:%20[email]&error=invalid_request
为什么会这样?我已按照所有说明进行操作,并将 email
作为范围包括在内。我期待 URL 中的 access_token
。
请帮忙。谢谢!
错误消息说电子邮件地址是必需的,这表明电子邮件是您的用户池中的必需属性。您通过包含 "email" 范围做了正确的事情,但您还必须通过将 facebook 电子邮件映射到 Cognito 电子邮件属性,在 Amazon Cognito 控制台中包含提供商(在您的情况下为 Facebook)的属性映射。请试一试,让我们知道它是否有效。
导致我出现此问题的原因是我向 Facebook 请求了一个不存在的属性。就我而言:
picture.size(large) # This does not exists and will cause errors
然后 Facebook 向 Cognito 响应一个错误,而 Cognito 只是告诉您所需的属性电子邮件不在请求中。因此,如果您收到此错误消息,问题很可能与电子邮件无关,而是其他设置错误,因此您会收到 invalid request
我遇到了类似的问题,但我的错误响应中列出了更多属性:
#error_description=attributes+required%3A+[name%2C+family_name%2C+email%2C+address]&error=invalid_request
您可以在 URL 中的错误消息中看到所需的属性与我在 AWS Cognito 用户池中拥有的所需属性相匹配。
由于无法修改已创建的用户池的属性,我不得不创建一个新的,这些字段为空,如下所示。
保存此新用户池中的更改后,我在 Facebook 开发门户中更新了此新用户池使用的域,我不再收到该错误。
我已经通过为我的应用程序创建一个帐户来解决这个错误。然后进入 facebook,进入应用程序的设置并告诉它不允许发送电子邮件。奇怪的是,cognito 似乎不知道要再次请求电子邮件。我能够通过访问 (https://developers.facebook.com/tools/explorer/?method=GET&path=me%3Ffields%3Did%2Cname%2Cemail&version=v6.0) 并再次请求令牌来读取设置。它导致弹出窗口说我的应用程序正在请求我的电子邮件。一旦我接受,设置就会回到 facebook 设置中,并且该应用程序可以正常运行。不知道Cognito是不是太笨了,在索取资料的时候又重新请求了示波器。
实际上,有两种方法可以消除这个错误:
#error_description=attributes%20required:%20[email]&error=invalid_request
1st : 您必须通过转到 facebook 下的 settings and privacy > General > contact
将您的电子邮件设为 facebook 的主要联系人。这是最可行的步骤,因为当您已经设置了无法覆盖的 Cognito 用户池时,您会收到此错误。
2nd : 在设置身份验证和创建用户池期间,删除电子邮件作为必需属性。
永远记住,用户池的这些配置不能被覆盖,如果您需要电子邮件作为必需属性或更改任何其他设置,您将需要删除现有用户池并重新创建它。因此,在创建用户池之前,您必须确定所需的配置。
我遇到了同样的错误,我通过检查隐式选项解决了这个错误。 给你...
我遇到过类似的问题,但是有 google 身份验证希望这个答案可以帮助别人, 解决方案是我们需要在身份提供者下提供所有必要的授权范围, name attribute is available under profile scope 这样 cognito 就会将这些字段(例如:电子邮件、姓名等)从社交帐户映射到您在创建用户池开始时定义的用户池属性(姓名、电子邮件等)。
我遇到了类似的错误。
error_description=attributes%20required%3A%20%5Bemail%5D&error=invalid_request#=
我通过在我的 Facebook 开发者帐户中授予对电子邮件的“高级访问权限”来解决这个问题。
您可以在“Facebook 开发者应用面板 -> 应用名称 -> 应用评论 - 我的权限和功能”中找到它