1

我正在构建一个 React 应用程序,它允许用户使用 Google 登录,然后连接到 Realm 中的 webhook/3rd 方服务。服务应该只返回用户拥有的数据。

我已经使用 Google 设置了 OAuth 2,并且可以为用户取回 access_token,然后将其在标头(我也尝试过 URL 参数)中传递给 webhook。但我收到一个错误回复说:

400“未指定身份验证方法”-“无效参数”。

经过大量测试,我确定这一定是一个领域问题——但我不知道是什么。

我尝试在 Postman 中使用 Google 进行身份验证并从那里发送请求,如下所示:

    GET <incoming_webhook URL>
    Request Headers
    Authorization: Bearer <access_token>
    User-Agent: PostmanRuntime/7.26.10
    Accept: */*
    Host: us-east-1.aws.webhooks.mongodb-realm.com
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive

但我得到同样的错误。

在 Realm 中,我启用了“Google”作为身份验证提供程序(并且身份验证工作不是通过 webhook 进行授权)。

4

1 回答 1

0

根据https://docs.mongodb.com/realm/services/configure/service-webhooks/#configure-user-authentication,您可以选择电子邮件/密码、API 密钥或自定义 JWT 令牌。我不知道您是否可以直接使用 google 登录到 webhook,但您最好创建一个领域功能。


关于错误no authentication methods were specified,您可以通过以下任一方式指定身份验证方法的类型(以自定义 JWT 为例):

  • 把它放在标题中:

标头:jwtTokenString,值:eyJhbGci.....

或者

  • 通过将其作为 webhook 主体的一部分:
{
    "jwtTokenString":"eyJhbGci...",
    "mydata": "my data value"
}

如果您尝试同时使用这两种方法,则会出现multiple authentication methods used错误。标头中的 HTTP Bearer 令牌等在这里没有用。

对于 API 密钥,jwtTokenString使用api-key;而不是 或email`password` 用于电子邮件\密码身份验证。

我发现这些提供身份验证信息的方法非常不直观,文档也很不清楚。

于 2021-10-18T19:58:41.177 回答