Meta 为 Business Whatsapp API/嵌入式流程集成提供的代码有 2 个问题
文档:https://developers.facebook.com/docs/whatsapp/embedded-signup/embed-the-flow/
我收到两个错误:
未捕获的引用错误:fbq 未定义 启动WhatsApp注册
FB.login 内的调用未被等待 - 我单击登录,对话框打开,并立即执行失败回调内的代码。这是主要问题,因为我可以只注释 fbq 行,但我需要阅读登录对话框响应才能访问令牌。
如何解决问题以便实现whatsapp嵌入式注册?.
SDK 正在加载,fbq 应该可以工作,并且应该等待回调。
<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>
and the javascript for that is as follows
window.fbAsyncInit = function () {
// JavaScript SDK configuration and setup
console.log(facebookMetaData.metaAPPID)
FB.init({
appId: facebookMetaData.metaAPPID, // Meta App ID
cookie: true, // enable cookies
xfbml: true, // parse social plugins on this page
version: 'v19.0' //Graph API version
});
};
// Load the JavaScript SDK asynchronously
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
// Facebook Login with JavaScript SDK
function launchWhatsAppSignup() {
// Conversion tracking code
fbq && fbq('trackCustom', 'WhatsAppOnboardingStart', {appId: facebookMetaData.metaAPPID, feature: 'whatsapp_embedded_signup'});
// Launch Facebook login
FB.login(function (response) {
if (response.authResponse) {
const code = response.authResponse.code;
// The returned code must be transmitted to your backend,
// which will perform a server-to-server call from there to our servers for an access token
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {
config_id: facebookMetaData.configurationID, // configuration ID goes here
response_type: 'code', // must be set to 'code' for System User access token
override_default_response_type: true, // when true, any response types passed in the "response_type" will take precedence over the default types
// extras: {
// setup: {
// ... // Prefilled data can go here
// }
// }
});
}
}
整整两天,我尽了一切努力,但没有任何效果。我几乎可以说我字面上阅读了我在谷歌上能找到的所有关于它的内容。
最后,唯一可以解决的问题就是将此代码从 Django 中取出,并创建一个独立的节点服务器,以便我可以使用 facebook 进行身份验证。
无论我做什么,回调都不会等待 Django 内部的响应。
在外面,开箱即用。