我正在尝试将facebook登录按钮合并到我网站的主页中。我已经将它与应用程序连接,所以我有应用程序ID和秘密,但我无法弄清楚如何检查用户是否已经注册到我的网站,所以在我的数据库中,为了预览他的userprofile。我已经使用了facebook上的javaScript sdk但是当我按下facebook的登录按钮时,在授权之后,没有任何反应,我的网站的主页再次显示。有谁知道如何从javascript sdk获取用户的电子邮件?我正在为我的页面使用java servlet。我使用了facebook文档中的代码。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '8568345835', // 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
});
// Additional initialization code here
};
// 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" data-scope="email">
答案 0 :(得分:4)
https://developers.facebook.com/docs/authentication/
客户端流程
客户端流程还为用户使用OAuth对话框 身份验证和应用授权。唯一的区别是你 必须使用令牌值
指定response_type
参数
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&response_type=token
与服务器端流程一样,您也可以使用scope参数请求其他权限:
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&
response_type=token
这可能是可能的,但这不是最佳做法。我建议引入一些服务器端脚本(即PHP),但是如果你使用Facebook Javascript SDK只获取一些用户数据,那么这个方法可能会有用。工作流程就是这样。
用户点击重定向到的Facebook Connect按钮:
https://www.facebook.com/dialog/oauth? CLIENT_ID = YOUR_APP_ID&安培; REDIRECT_URI = YOUR_URL&安培; RESPONSE_TYPE =记号
Facebook检查YOUR_APP_ID和URL并执行身份验证
重定向到您的网址。
http://YOUR_URL#access_token=166942940015970%7C2.sa0&expires_in=64090
...在网址中使用访问令牌。
稍后您将从URL中提取令牌并使用它通过AJAX请求执行FQL(Facebook查询语言),并获取用户数据。
答案 1 :(得分:1)
在OAuth重定向和授权之后,再次显示页面后,尝试转储您的会话(类似于php中的print_r($ _ SESSION))。它应包含从Facebook获得的用户数据。