Facebook JavaScript SDK Не возвращает код авторизации для встроенной регистрации в WhatsApp в Django
Я пытаюсь реализовать встроенную регистрацию в WhatsApp с помощью Facebook SDK, но функция 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 для запуска html-страницы
@csrf_exempt
def hello_view(request):
return render(request, 'test.html')
Нажатие кнопки "Войти с помощью Facebook" запускает функцию регистрации WhatsApp(), но объект authResponse в обратном вызове не содержит ожидаемого кода авторизации. Похоже, что Django не ждет, пока пользователь завершит регистрацию. Это происходит сразу же после того, как я нажимаю на кнопку. Однако, когда я пробую этот html-код в собственном JavaScript, он работает должным образом. Какое решение для этого?