Прежде всего, я проверил похожие сообщения на stackoverflow об этом, но ни одна из них не помогла мне.
Когда я открываю консоль браузера на моем веб-сайте, я вижу это:
{authResponse: {…}, status: "connected"}
authResponse: {accessToken: "XXXXX…XXXXX", userID: "YYYYYY", expiresIn: 5360, signedRequest: "ZZZZZZZZZ", data_access_expiration_time: 1576711495}
статус: «подключен»
Я добавил кнопку и функцию на моем внешнем интерфейсе для входа в систему с Facebook.чего не хватает, так это того, что я не знаю, как получить информацию о пользователе, передаваемом бэкэнду
, это кнопка входа в систему:
<fb:login-button
scope="public_profile,email"
onlogin="checkLoginState">
</fb:login-button>
, за которой следует функция checkLoginState:
window.fbAsyncInit =
function()
{
FB.init
(
{
appId:"wwwwwwwwwwwwwwwww",
cookie: true,
xfbml: true,
version: "v4.0"
}
);
getLoginStatus();
}
function getLoginStatus()
{
FB.getLoginStatus
(
function ( response )
{
console.log( response );
}
);
}
function checkLoginState()
{
getLoginStatus();
}
(
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");
что касается бэкэнда, это то, что у меня есть
@app.route('/fb')
def fb():
facebook_blueprint = make_facebook_blueprint(client_id='xxxxxx',client_secret='yyyyyy', scope=['email', 'user_birthday'])
app.register_blueprint(facebook_blueprint, url_prefix="/")
if not facebook.authorized:
return redirect(url_for('facebook.login'))
account_info = facebook.get('account/settings.json')
assert account_info.ok
account_info_json = account_info.json()
email = account_info.json()['email'] # nor this
birthday = account_infon.json()['birthday'] # nor this
print email, birthday
return ('',204)
в настройках приложения facebook, у меня есть mydomain.com/, www.mydomain.com, mydomain.com/fb, www.mydomain.com/_oauth/facebook и т. д.