#javascript #facebook #oauth #facebook-javascript-sdk #facebook-php-sdk
Вопрос:
У меня есть страница, где у меня есть кнопка, которая запускает функцию FB.login, и я пытаюсь ее утешить.зарегистрируйте доступ после того, как статус ответа «подключен», и я также хочу перенаправить на страницу в качестве теста, window.location.href
но ни то, ни другое не работает.
Когда я вхожу в систему, появляется всплывающее окно, и после успешного входа в систему это всплывающее окно закрывается, и я все еще на начальной странице с кнопкой входа в систему, но, похоже, ничего не происходит с любым кодом, который я помещаю в свой оператор if. Документация facebook довольно расплывчата, и в ней нет хороших примеров того, что мне нужно сделать после входа в систему.
function fb_login() {
FB.login(function(response){
if(response.status === 'connected'){
var accessToken = response.authResponse.accessToken;
console.log(accessToken)
window.location.href = "https://google.com";
}
});
}
Это кнопка html:
<div data-scope="public_profile,email,pages_read_engagement,pages_show_list" class="fb-login-button" data-width="" data-size="large" data-button-type="continue_with" data-layout="default" data-auto-logout-link="true" data-use-continue-as="true"></div>
Комментарии:
1.если внутри
if
заявления ничего не происходит, возможноresponse.status !== 'connected'
, попробуйтеconsole.log(response.status)
до того, какif
2. ничто не регистрируется даже до инструкции if.
3. а как насчет консоли? войти раньше
FB.login
?4. Я получаю ответ неопределенный
5. ну да, я не сказал
console.log(response)
, так как это остановит запуск вашего кода. Такfb_login()
что выполняется, иFB.login()
выполняется, так как вы получаете всплывающее окно … но в обратном вызове ничего нет — очень странно. Есть ли еще какие-либо выходные данные в консоли, которые могут быть полезны для отладки?
Ответ №1:
Хорошо, я неправильно понял поток. Исправление состояло в том, чтобы удалить функцию fb_login, так как кнопка уже запускала всплывающее окно для входа в систему. Затем я добавил data-onlogin="loginStatus()"
кнопку html для запуска FB.getLoginStatus
, и теперь я могу получить доступ к маркеру на странице и отправить его на сервер, если это необходимо.
<div data-onlogin="loginStatus()" data-scope="public_profile,email,pages_read_engagement,pages_show_list" class="fb-login-button" data-width="" data-size="large" data-button-type="continue_with" data-layout="default" data-auto-logout-link="true" data-use-continue-as="true"></div>
function loginStatus(){
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// The user is logged in and has authenticated your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire.
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
console.log(accessToken)
} else if (response.status === 'not_authorized') {
// The user hasn't authorized your application. They
// must click the Login button, or you must call FB.login
// in response to a user gesture, to launch a login dialog.
} else {
// The user isn't logged in to Facebook. You can launch a
// login dialog with a user gesture, but the user may have
// to log in to Facebook before authorizing your application.
}
});
}