Facebook graph api facebook身份验证自动弹出,而不是单击按钮
我试过Fowling密码Facebook graph api facebook身份验证自动弹出,而不是单击按钮,facebook-graph-api,facebook-javascript-sdk,Facebook Graph Api,Facebook Javascript Sdk,我试过Fowling密码 https://developers.facebook.com/blog/post/2011/07/21/updated-javascript-sdk-and-oauth-2-0-roadmap/ 它用于身份验证 现在我想在页面加载后自动弹出,而不是让人们再次点击按钮 我编辑并能够触发自动翻页,但这只有在我保留按钮的情况下才能起作用 我怎样才能卸下按钮,让它仍然工作 这就是我所做的: <!DOCTYPE html> <html xmlns:fb="
https://developers.facebook.com/blog/post/2011/07/21/updated-javascript-sdk-and-oauth-2-0-roadmap/
它用于身份验证
现在我想在页面加载后自动弹出,而不是让人们再次点击按钮
我编辑并能够触发自动翻页,但这只有在我保留按钮的情况下才能起作用
我怎样才能卸下按钮,让它仍然工作
这就是我所做的:
<!DOCTYPE html>
<html xmlns:fb="https://www.facebook.com/2008/fbml">
<head>
<title>
New JavaScript SDK
</title>
</head>
<body>
<div id="fb-root"></div>
<h2>Updated JS SDK example</h2><br />
<div id="user-info"></div>
<p><button id="fb-auth">Login</button></p>
<script>
window.fbAsyncInit = function() {
FB.init({ appId: 'xxx',
status: true,
cookie: true,
xfbml: true,
oauth: true});
function updateButton(response) {
var button = document.getElementById('fb-auth');
if (response.authResponse) {
//user is already logged in and connected
var userInfo = document.getElementById('user-info');
FB.api('/me', function(response) {
userInfo.innerHTML = '<img src="https://graph.facebook.com/'
+ response.id + '/picture">' + response.name;
button.innerHTML = 'Logout';
});
button.onclick = function() {
FB.logout(function(response) {
var userInfo = document.getElementById('user-info');
userInfo.innerHTML="";
});
};
} else {
//user is not connected to your app or logged out
//button.innerHTML = 'Login';
// button.onclick = function() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
var userInfo = document.getElementById('user-info');
userInfo.innerHTML =
'<img src="https://graph.facebook.com/'
+ response.id + '/picture" style="margin-right:5px"/>'
+ response.name;
});
} else {
//user cancelled login or did not grant authorization
}
}, {scope:'email'});
}
//}
}
// run once with current status and whenever the status changes
FB.getLoginStatus(updateButton);
FB.Event.subscribe('auth.statusChange', updateButton);
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol
+ '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
</body>
</html>
新的JavaScript SDK
更新的JS SDK示例
登录
window.fbAsyninit=函数(){
FB.init({appId:'xxx',
状态:正确,
曲奇:是的,
xfbml:是的,
oauth:true});
函数更新按钮(响应){
var button=document.getElementById('fb-auth');
if(response.authResponse){
//用户已登录并连接
var userInfo=document.getElementById('user-info');
FB.api('/me',函数(响应){
userInfo.innerHTML=''+response.name;
button.innerHTML='Logout';
});
button.onclick=函数(){
FB.注销(功能(响应){
var userInfo=document.getElementById('user-info');
userInfo.innerHTML=“”;
});
};
}否则{
//用户未连接到您的应用或未注销
//button.innerHTML='Login';
//button.onclick=函数(){
FB.登录(功能(响应){
if(response.authResponse){
FB.api('/me',函数(响应){
var userInfo=document.getElementById('user-info');
userInfo.innerHTML=
''
+响应.名称;
});
}否则{
//用户已取消登录或未授予授权
}
},{范围:'email'});
}
//}
}
//使用当前状态运行一次,并在状态更改时运行一次
FB.getLoginStatus(更新按钮);
FB.Event.subscribe('auth.statusChange',updateButton);
};
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol
+“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol
+“//connect.facebook.net/en_US/all.js”;
document.getElementById('fb-root').appendChild(e);
}());
window.fbAsyninit=函数(){
FB.init({appId:'xxx',
状态:正确,
曲奇:是的,
xfbml:是的,
oauth:true});
fbLoginStatus();
});
函数fbLoginStatus()
{
FB.getLoginStatus(函数(响应){
控制台日志(响应);
如果(response.status===“已连接”){
access_token=FB.getAuthResponse()['accessToken'];
myinfo();
}否则{
fblogin();
}
});
}
函数fblogin()
{
FB.登录(功能(响应){
if(response.authResponse){
控制台日志(响应);
access_token=FB.getAuthResponse()['accessToken'];
myinfo();
}否则{
log('用户取消登录或未完全授权');
}
},{范围:'电子邮件'});
}
函数myinfo()
{
FB.api('/me',函数(响应){
userid=response.id;
警报(用户标识);
user_name=response.name;
警报(用户名);
});
}
尝试此代码,它将完全满足您的需要。以下是代码。我认为上面的代码也应该起作用
<script>
window.fbAsyncInit = function(){
FB.init({
appId: '1486670758257443',
status: true,
cookie: true,
xfbml: true,
oauth: true,
version : 'v2.1'
});
fbLoginStatus();
};
(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/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function fbLoginStatus(){
FB.getLoginStatus(function(response) {
console.log(response);
if (response.status === 'connected') {
var access_token = FB.getAuthResponse()['accessToken'];
console.log(access_token);
} else {
fblogin();
}
});
}
function fblogin(){
FB.login(function(response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
console.log(access_token);
} else {
console.log('Authorization failed.');
}
},{ //permissions
scope: 'email'
});
}
</script>
window.fbAsyninit=函数(){
FB.init({
appId:'1486670758257443',
状态:正确,
曲奇:是的,
xfbml:是的,
真的,
版本:“v2.1”
});
fbLoginStatus();
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
函数fbLoginStatus(){
FB.getLoginStatus(函数(响应){
控制台日志(响应);
如果(response.status===“已连接”){
var access_token=FB.getAuthResponse()['accessToken'];
console.log(访问令牌);
}否则{
fblogin();
}
});
}
函数fblogin(){
FB.登录(功能(响应){
if(response.authResponse){
var access_token=FB.getAuthResponse()['accessToken'];
console.log(访问令牌);
}否则{
log('授权失败');
}
},{//权限
范围:“电子邮件”
});
}
还有一件事要提的是,根据facebook文档,弹出窗口应该通过点击事件打开。他们是这么说的
调用FB.login会导致JS SDK尝试打开弹出窗口。因此,此方法只能在用户单击事件后调用,否则弹出窗口将被大多数浏览器阻止
嗨,杰,谢谢你的回复。我复制了代码,但似乎没有做任何事情Hi Visual,现在检查更新的代码,你会得到两个关于当前用户id和姓名的警报非常奇怪,但它没有给出任何警报或类似的!我尝试了不同的浏览器,还是什么都并没有。你们在页面主体中创建了“”吗?很奇怪,还是什么都并没有。。我需要完成这个,所以我将使用文档中使用的常规按钮。我以后会设法弄清楚的。非常感谢你的例子!
<script>
window.fbAsyncInit = function(){
FB.init({
appId: '1486670758257443',
status: true,
cookie: true,
xfbml: true,
oauth: true,
version : 'v2.1'
});
fbLoginStatus();
};
(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/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function fbLoginStatus(){
FB.getLoginStatus(function(response) {
console.log(response);
if (response.status === 'connected') {
var access_token = FB.getAuthResponse()['accessToken'];
console.log(access_token);
} else {
fblogin();
}
});
}
function fblogin(){
FB.login(function(response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
console.log(access_token);
} else {
console.log('Authorization failed.');
}
},{ //permissions
scope: 'email'
});
}
</script>