WhatsApp ESB - 无法获取access_token,因为redirect_uri 不匹配

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

作为技术提供商,我目前正在努力整合 WhatsApp。主要问题是用户通过 Facebook 登录成功处理后获得

access_token
。当我获取从登录流收到的数据并将请求发送到
https://graph.facebook.com/v21.0/oauth/access_token
端点时,出现以下错误:

{
    "error": {
        "message": "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request",
        "type": "OAuthException",
        "code": 100,
        "error_subcode": 36008,
        "fbtrace_id": "AAH5Klp99JmQfQsk2MSLckg"
    }
}

我尝试搜索我到底应该设置什么,大多数响应都正确设置了有效的 OAuth 重定向 URI。我在这里允许了,并且也遵循了这个文档:https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation

不幸的是,没有任何帮助。

在开发过程中,我还使用嵌入式注册集成帮助程序进行了测试,您可以在 Facebook 开发人员的 WhatsApp 产品中找到它WhatsApp Embeded Signup Integration Helper

Embedded Signup Flow dialog button

当您完成此注册流程时,您将获得所有必要的令牌和 ID 来获得

access_token

您可以在页面上获取此令牌。他们发送以下请求:

curl -X POST \
  'https://graph.facebook.com/v21.0/oauth/access_token' \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "123",
    "client_secret": "********************************",
    "code": "skjhfbasjfbaskjfbashbfjhas",
    "grant_type": "authorization_code",
    "redirect_uri": "https://developers.facebook.com/es/oauth/callback/?business_id=321&nonce=ZCqFKxk0Xd1Gr7OA0unqkb22bPzMtxuZ"
  }'

令我感兴趣的是他们要求中的

redirect_uri
。我不知道为什么,但此 URI 与您调用登录的 URI 不匹配。页面网址为 https://developers.facebook.com/apps/123/whatsapp-business/es-integration/?business_id=321&session_info_version=3

我很绝望,我不知道该如何解决。你知道我该如何解决这个问题吗?

感谢您的帮助。

facebook access-token whatsapp
1个回答
0
投票

不确定您在哪个平台上,但我正在 Laravel 上工作并且遇到了与此处提到的相同的问题。设法通过使用下面的方法修复。

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

$client = new Client();

$headers = [
 'Content-Type' => 'application/json',
 'Accept' => 'application/json'
];

$request = new Request(
 'GET',
 'https://graph.facebook.com/v21.0/oauth/access_token?client_id=' . $fbId . '&client_secret=' . $fbSecret . '&code=' . $code,
 $headers
);

$response = $client->sendAsync($request)->wait();

$body = json_decode($response->getBody(), true);

if (isset($body['access_token'])) {
   return $body['access_token'];
}

不断收到错误消息“重定向 uri 不匹配...”,但在使用邮递员尝试完全相同的 url 时,我成功获取了访问令牌。因此尝试使用 PHP - Guzzle(由邮递员生成的代码)并设法获得成功的 json 响应。

{
  "access_token": {token},
  "token_type": "bearer",
  "expires_in": {time}
}

希望有帮助。

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