Email 使用Facebook帐户登录我的网站
我正在尝试将Email 使用Facebook帐户登录我的网站,email,facebook-javascript-sdk,facebook-login,Email,Facebook Javascript Sdk,Facebook Login,我正在尝试将facebook登录按钮合并到我的网站主页中。我已将其与应用程序连接,因此如果用户已注册,我有应用程序id和密码 我使用了facebook上的JavaScript SDK,但当我按下facebook的登录按钮时,授权后,什么都没有发生,我的网站主页再次显示。有人知道如何从Javascript SDK获取用户的电子邮件吗?我想在登录后重定向到另一个页面,但登录后它只停留在该页面上 <div id="fb-root"></div> <script>
facebook登录按钮
合并到我的网站主页中。我已将其与应用程序连接,因此如果用户已注册,我有应用程序id
和密码
我使用了facebook上的JavaScript SDK
,但当我按下facebook的登录按钮时,授权后,什么都没有发生,我的网站主页再次显示。有人知道如何从Javascript SDK获取用户的电子邮件吗?我想在登录后重定向到另一个页面,但登录后它只停留在该页面上
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function()
{
FB.init({
appId : '178124332351909', // App ID
channelUrl : '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
});
FB.Event.subscribe('auth.authResponseChange', function(response)
{
if (response.status === 'connected')
{
alert("connected");
testAPI();
}
else if (response.status === 'not_authorized')
{
alert("nt connected");
FB.login();
}
else
{
alert("else");
FB.login();
}
});
};
// 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));
// Here we run a very simple test of the Graph API after login is successful.
// This testAPI() function is only called in those cases.
function testAPI()
{
alert("in testapi");
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response)
{
console.log('Good to see you, ' + response.name + '.');
});
}
</script>
window.fbAsyninit=函数()
{
FB.init({
appId:'178124332351909',//应用ID
channelUrl:'channel.html',//频道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
FB.Event.subscribe('auth.authResponseChange',函数(响应)
{
如果(response.status===“已连接”)
{
警报(“已连接”);
testAPI();
}
else if(response.status===“未授权”)
{
警报(“连接新界”);
FB.login();
}
其他的
{
警惕(“其他”);
FB.login();
}
});
};
//异步加载SDK
(职能(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);
}(文件);
//在这里,我们在登录成功后运行一个非常简单的Graph API测试。
//此testAPI()函数仅在这些情况下调用。
函数testAPI()
{
警报(“测试中”);
log('欢迎!获取您的信息…);
FB.api('/me',函数(响应)
{
log(“很高兴见到你,+response.name+”);
});
}
参考:
请帮助如何重定向到其他页面
要请求电子邮件的权限
,请将Fb.login()
替换为:
FB.login(function(response)
{
if(response.status == 'connected'){
alert('I am connected')
}
},{scope: 'email'});
要在成功登录后将用户重定向到其他页面,只需在testAPI()
函数中编写重定向代码:
function testAPI()
{
alert("in testapi");
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response)
{
console.log('Good to see you, ' + response.name + '.');
});
window.location="http://www.newlocation.com"; // HERE
}
可能有一个原因:
- 当您单击登录按钮>>时,它会尝试打开弹出窗口>>如果“允许弹出被阻止”>>则它只会刷新页面,用户会认为什么都没有发生
如果你想得到用户的电子邮件,那么你可以把它作为一个“perms”参数传递,比如这样
<div class="fb-login-button" onclick="fbLoginClick();" perms="email"><div>
对于重定向,我编写了与u相同的代码…但是在登录后,当我单击“后退”按钮时,它不会返回…你是说重定向成功了?你为什么要回去?是否因为打开应用程序时自动重定向?如果是,那么你可以制作一个facebook按钮,或者你可以在ingonito浏览器中运行你的应用程序,或者清除浏览器的缓存并运行。好的…事实上,我是用我的fb登录创建应用程序的…当我在mysite中单击login时…它会询问邮件id和pwd…如果是我的id,那么它会显示我的个人资料名称…否则它不会显示任何一个名称…为什么我不明白…你是说只有“你”才能登录吗?如果是这样,请转到应用程序设置并将沙盒模式切换到关闭。(从转到应用程序仪表板)如果答案对您有帮助,您可以将其标记为正确。干杯