У меня есть следующее в верхней части URL-адреса моего приложения.Кнопка входа в систему Facebook не принимает разрешения при нажатии
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '123456789',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
FB.getLoginStatus(function(response) {
if(response.status === 'connected') {
if(response.authResponse != 'undefined'){
window.location = '<?php echo $base_url; ?>register';
}
} else if(response.status === 'not_authorized')
{
//it means we have a user but he hasn't granted any permissions to our app
//we're going to redirect him to the permission page
window.location = 'https://www.facebook.com/dialog/oauth?client_id=456109407732505&response_type=code&redirect_uri=<?php echo $base_url; ?>register&scope=email,publish_actions,user_likes';
} else
{
//the user is not logged in, as you already have a login button you don't have to do nothing
}
});
FB.Event.subscribe('auth.login', function(response) {
window.location = '<?php echo $base_url; ?>register';
});
};
(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 = '//connect.facebook.net/en_US/all.js';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-login-button"
data-show-faces="false"
data-scope="email,publish_actions,manage_notifications,user_likes"
size="large"
data-width="200"
data-max-rows="1">
</div>
Единственный раз, когда этот код выдает ошибку, когда пользователь просмотра сайта регистрируется в FB, но не принял разрешения приложения. В этом случае пользователь будет перенаправлен на ссылку, указанную в JS (регистр «https://www.facebook.com/dialog/oauth?client_id=456109407732505&response_type=code&redirect_uri=» & scope = email, publish_actions, user_likes »), где они могут выбрать либо принять, либо отклонить запрошенные разрешения. Если пользователь решит принять разрешения через эту ссылку, все будет хорошо. Однако после нажатия кнопки входа в систему FB появится всплывающее окно, которое также дает пользователю возможность принять или отклонить разрешения. После принятия запрашиваемых разрешений на всплывающее окно по какой-либо причине электронная почта пользователя не извлекается. Пользователь перенаправляется в файл register.php и генерируется ошибка. Однако, когда страница register.php обновляется, она работает нормально.
В моем файле register.php. У меня есть
require_once('application/third_party/facebook_api/src/facebook.php');
$facebook = new Facebook(array('appId' => '123456789',
'secret' => 'app_secret',
'cookie' => true));
$access_token = $facebook->getAccessToken();
if($access_token != '')
{
$user = $facebook->getUser();
if($user != 0)
{
// Get the user's info
$user_profile = $facebook->api('/'.$user);
// Get the user's permissions
$perms = $facebook->api('/'.$user.'/permissions');
$perms = $perms['data'][0];
$installed = $perms['installed'];
if($installed == 1)
{
$fb_first_name = $user_profile['first_name'];
$fb_last_name = $user_profile['last_name'];
// Find out if they accepted the email permission
$email_perm = $perms['email'];
if($email_perm == 1)
{
$fb_email = $user_profile['email'];
} else
{
$fb_email = '';
}
}
}
PHP бросает мне ошибку чтения «неопределенную индекс„электронной почты“.» Он работает на обновления страницы, но не в первый раз. Вы можете перейти к my app, чтобы увидеть рабочий пример.
Благодаря кучу