2015-06-26 41 views
0

我使用Yii eauth插件登录社交网络,它可以在我的prod服务器上运行。但是我有问题让它在我的本地开发者机器上工作。本地主机上的Facebook登录问题

我没有用户http://localhost,但http://my-domain.com

我已经创建了一个名为FB MyApp的地方,但我不能确定如何在App DomainsSite URL增加。

enter image description here

当我登录时,FB弹出的对话框URL看起来是这样的:

https://www.facebook.com/dialog/oauth?client_id=12345678901515987&redirect_uri=http%3A%2F%2Fmy-domain.com%2Flogin%3Fservice%3Dfacebook&scope=email,%20public_profile,%20user_friends&response_type=code

但什么也没有发生,我只是重定向回到我的登录页面。
有谁知道我在做什么错?

更新
我的本地主机JS代码目前:
(这是摆在头)

 window.fbAsyncInit = function() { 
      FB.init({ 
       appId  : '12345678901515987', 
       xfbml  : true, 
       version : 'v2.3' 
      }); 
     }; 

     (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')); 

的唯一附加JS代码,我可以在我的源代码中找到(被Yii产生eauth)是这样的:

/*<![CDATA[*/ 
jQuery(function($) { 
    $(".auth-service.facebook a").eauth({"popup":{"width":585,"height":290},"id":"facebook"}); 

}); 
/*]]>*/ 
+0

请把你的JS代码以实现登录。 – crafter

+0

您发布的代码会告诉您如何连接到FB,而不是在您收到对身份验证尝试的响应后该做什么。请跟踪并添加此内容。 – crafter

+0

我刚刚发现了Yii eauth生成的一行代码。 – Steven

回答

0

这是我的解决方案,在我的本地主机上正常工作。

你会在代码中看到一行:

window.location.href = “/ WEBUSER /帐号/ fblogin”;

的URL“/WEBUSER /帐号/ fblogin”是控制器的动作将创建一个用户会话和配置用户的登录

<div id="fb-root"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '1234567890', // replace your app id here 
      channelUrl: 'https://www.facebook.com/your_fb_url', 
      status: true, 
      cookie: true, 
      xfbml: true 
     }); 
    }; 
    (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)); 
    function FBLogin() { 
     FB.login(function(response) { 
      if (response.authResponse) { 
       window.location.href = "/webuser/account/fblogin"; 
      } 
     }, {scope: 'email,publish_actions,user_birthday,user_location,user_work_history'}); 
    } 
    $(document).ready(function(){ 
     $('#login-facebook').click(function(event){ 
      event.preventDefault() 
      FBLogin(); 
      return false; 
     }); 
    }); 
</script> 
+0

谢谢@ crafter。你的代码有多大?因为它与我的看法很不一样。 (请参阅我的问题中添加的代码) – Steven

+0

好吧,我现在只是看到你正在使用eauth。对不起,我错过了这一点,我的代码使用FB JS API。我会尽快删除我的答案,因为它不直接回答你的问题。然而。我相信生成的代码看起来像Facebook在一天结束时所要求的。快乐狩猎。 – crafter