我正在嘗試將 Facebook SDK 用于 javascript,我希望用戶登錄以便我可以獲取 FB 回傳的令牌,該程序成功完成但我收到錯誤“嘗試獲取資源時出現 NetworkError”。在控制臺中。
這是我呼叫 facebook sdk 并與我的應用程式連接的代碼:
export function initFacebookSdk() {
return new Promise(resolve => {
// wait for facebook sdk to initialize before starting the react app
window.fbAsyncInit = function () {
window.FB.init({
appId: <appId>,
cookie: true,
xfbml: true,
version: 'v13.0'
});
resolve()
};
});
}
export function loadFacebookSDK(d, s, id){
return new Promise(resolve => {
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);
resolve()
})
}
這是我呼叫 Facebook 登錄的函式:
export const FbLogin = () => {
return new Promise( resolve => {
loadFacebookSDK(document, "script", "facebook-jssdk")
initFacebookSdk()
window.FB.login(response => {
if (response.authResponse) {
resolve(response);
} else {
resolve(response);
}
}, {scope: 'email'});
})
}
這部分代碼是呼叫函式并正確獲取令牌的部分:
const getFbToken = async (e) => {
e.preventDefault()
const data = await FbLogin();
console.log(data);
}
我需要幫助來了解我做錯了什么以及如何防止錯誤出現,因為現在我正在本地執行測驗。
幫助 :(
uj5u.com熱心網友回復:
NetworkError表示請求無法通過。最常見的原因是:
- 該請求已被用戶阻止,例如廣告攔截器(Facebook 常見)
- 端點的 CORS 策略不允許該請求
- 端點輸入錯誤,或缺少協議 (https)
- 端點離線(Facebook SDK 不太可能)
- 客戶端離線,或者(如果在服務器上運行)防火墻規則阻止訪問
就 OP 而言,他們的廣告攔截器阻止了對 Facebook 的請求。這很常見,因為相同的 SDK 用于收集用戶資料和顯示 Facebook 廣告。
為了防止使用廣告攔截器的用戶體驗不佳,如果請求被阻止,您可能希望顯示有意義的錯誤訊息。這篇文章中描述了一個巧妙的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461528.html
標籤:javascript 反应 Facebook 网页包
