2012-06-27 2 views
4

Я пытаюсь получить кнопку «Вход» из Facebook для работы на моем сайте с помощью Javascript SDK. Если пользователь вошел в систему, я возвращаю адрес электронной почты. Это работает. Но на странице, где у меня есть кнопка входа в Facebook, у меня также есть обычный логин для моего сайта. (имя пользователя & пароль). Но когда я перехожу на страницу входа, страница автоматически загружает кнопку Facebook и появляется диалоговое окно входа в систему Facebook. Но я не хочу автоматически загружать эту кнопку. Я хочу, чтобы пользователям всегда приходилось нажимать кнопку входа в систему для Facebook. Это возможно?Javascript SDK автоматически залогинится

Это мой код:

<script> 
    window.fbAsyncInit = function() { 
FB.init({ 
     appId: 'MY_APP_ID', // App ID 
     status: true, 
     cookie: true, 
     xfbml: true, 
     oauth: true, 

}); 
FB.getLoginStatus(function(response) { 
    FB.login(function(response) { 
    if (response.authResponse) { 
    FB.api('/me', function(response) { 
     alert('Good to see you, ' + response.email + '.'); 
    }); 
    } else { 
    alert('User cancelled login or did not fully authorize.'); 
    } 
}); 
}); 

// Additional initialization code here 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

ответ

5

FB.getLoginStatus метод используется, чтобы узнать, был ли пользователь вошел в систему или не

FB.login используется для запроса страницы входа для аутентификации и авторизации приложения.

Вы вызываете метод FB.getLoginStatus и не беспокоитесь об ответе и стрельбе по кнопке fb.login всегда.

Если вы хотите всегда пользователь нажать кнопку Войти, не используйте FB.getLoginStatus

Используйте этот код

<html> 
    <head> 
     <title>My Facebook Login Page</title> 
    </head> 
    <body> 

     <div id="fb-root"></div> 
     <script> 
     window.fbAsyncInit = function() { 
      FB.init({ 
      appId  : 'YOUR_APP_ID', // App ID 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
      }); 
     }; 
     // Load the SDK Asynchronously 
     (function(d){ 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
     }(document)); 
     </script> 

     <div class="fb-login-button">Login with Facebook</div> 

    </body> 
</html> 

FYI: https://developers.facebook.com/docs/guides/web/
проверка подлинности раздел

+0

Ах, я думаю, что это. Нет. Мне нужно попытаться понять, как работает аутентификация. Я не понимаю, как я, например, получаю адрес электронной почты пользователей? – Ruub

+1

_ «Я не понимаю, как я, например, получаю адрес электронной почты пользователей?» _ - путем запроса API Графа, конечно. 'FB.api ("/me ", function (response) {...});' (И не забудьте сначала получить необходимое разрешение.) – CBroe

Смежные вопросы