Поток входа работает - я вижу, как входной ManAnager возвращает успех, и токен доступа действителен. Я даже прошу «Электронная почта» разрешение, а Facebook подтверждает, что она предоставлена. class = "Snippet-Code">
Код: Выделить всё
const fetchFacebookProfile = (accessToken) => {
return new Promise((resolve, reject) => {
const request = new GraphRequest(
"/me?fields=id,name,email,picture",
{ accessToken },
(error, result) => {
if (error) {
console.error("❌ GraphRequest error:", error);
reject(error);
} else {
console.log("✅ GraphRequest result:", result);
resolve(result);
}
}
);
new GraphRequestManager().addRequest(request).start();
});
};
const onFacebookSignIn = async () => {
console.log("🔵 Facebook login button pressed");
try {
await LoginManager.logOut(); // reset state
if (Platform.OS === "android") {
LoginManager.setLoginBehavior("web_only");
} else {
LoginManager.setLoginBehavior("browser");
}
const result = await LoginManager.logInWithPermissions([
"public_profile",
"email",
]);
console.log("📋 Facebook LoginManager result:", result);
if (result.isCancelled) {
console.log("⚠️ Facebook login was cancelled by user");
return;
}
const data = await AccessToken.getCurrentAccessToken();
console.log("🔑 Facebook AccessToken data:", data);
if (!data?.accessToken) {
throw new Error("Failed to get token from Facebook");
}
const profile = await fetchFacebookProfile(data.accessToken);
if (!profile?.email) {
console.warn("⚠️ Facebook did not return email. Fallback may be required.");
}
console.log("👤 Final Facebook profile object:", profile);
// send profile + token to backend...
} catch (err) {
console.error("❌ Facebook login error:", err);
}
};< /code>
< /div>
< /div>
< /p>
Результат LoginManager показывает, что разрешение по электронной почте было предоставлено ✅ < /p>
Токен доступа. class = "Snippet">
📋 Facebook LoginManager result: {"declinedPermissions": [], "grantedPermissions": ["openid", "public_profile", "email"], "isCancelled": false}
✅ Granted permissions: openid,public_profile,email
👤 Final Facebook profile object: {
"id": "122102279283016873",
"name": "Hamed El Ghoul",
"picture": {
"data": {
"height": 50,
"is_silhouette": true,
"url": "https://scontent-yyz1-1.xx.fbcdn.net/...jpg",
"width": 50
}
}
}
⚠️ Facebook did not return email. Fallback may be required.Подробнее здесь: https://stackoverflow.com/questions/797 ... turn-email