You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django环境下集成WhatsApp嵌入式注册时Facebook JS SDK无法返回授权码的问题求助

Django环境下集成WhatsApp嵌入式注册时Facebook JS SDK无法返回授权码的问题求助

我正在尝试用Facebook SDK实现WhatsApp嵌入式注册,但FB.login()的回调函数里拿不到预期的授权码。以下是我按照官方文档实现的前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Embedded Signup</title>
</head>
<body>

<!-- SDK loading -->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>

<script>
  // SDK initialization
  window.fbAsyncInit = function() {
    FB.init({
      appId: 'appId', // my app ID
      autoLogAppEvents: true,
      xfbml: true,
      version: 'v22.0' // Graph API version
    });
  };

  // Session logging message event listener
  window.addEventListener('message', (event) => {
    if (event.origin !== "https://www.facebook.com" && event.origin !== "https://web.facebook.com") return;
    try {
      const data = JSON.parse(event.data);
      if (data.type === 'WA_EMBEDDED_SIGNUP') {
        console.log('message event: ', data); // Debugging log
      }
    } catch {
      console.log('message event: ', event.data); // Debugging log
    }
  });

  // Response callback
  const fbLoginCallback = (response) => {
    if (response.authResponse) {
      const code = response.authResponse.code; // Expected authorization code
      console.log('response: ', code); // Debugging log
    } else {
      console.log('response: ', response); // Debugging log
    }
  };

  // Launch method and callback registration
  const launchWhatsAppSignup = () => {
    FB.login(fbLoginCallback, {
      config_id: 'config_id', // my configuration ID
      response_type: 'code',
      override_default_response_type: true,
      extras: {
        setup: {},
        featureType: '',
        sessionInfoVersion: '3',
      }
    });
  };
</script>

<!-- Launch button -->
<button onclick="launchWhatsAppSignup()" style="background-color: #1877f2; border: 0; border-radius: 4px; color: #fff; cursor: pointer; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; height: 40px; padding: 0 24px;">Login with Facebook</button>

</body>
</html>

下面是用来渲染该页面的简单Django视图函数:

@csrf_exempt
def hello_view(request):
    return render(request, 'test.html')

点击“Login with Facebook”按钮会触发launchWhatsAppSignup(),但回调里的authResponse对象没有预期的授权码。看起来Django根本没等用户完成注册流程,我一点按钮就直接返回了空值。但我用纯原生JS跑这个HTML的时候是正常的,有没有解决办法?

备注:内容来源于stack exchange,提问作者drawhouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:18:04