Facebook graph api facebook身份验证自动弹出,而不是单击按钮

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="

我试过Fowling密码

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>