2015-06-26 82 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