2012-09-27 41 views
0

我正在尝试调用Facebook oauth登录。一旦用facebook登录页面出现弹出窗口,它不会再重定向到同一个应用程序。Facebook oAuth不会重定向回应用程序

<html> 
<head> 
    <script type="text/javascript" src="/mp/struts/js/base/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="/mp/maincommon/static/js/all.js"></script> 
    <script type="text/javascript"> 
     function onFaceBookAuth(user){ 
      var id = user['id']; 
      var firstName = user['first_name']; 
      var lastName = user['last_name']; 
      var email = user['email']; 

      var params = "applicantId="+id+"&firstName="+firstName+"&lastName="+lastName; 
      var xmlhttp; 
      if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 
      } 
      else {// code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        var response = xmlhttp.responseText; 
        if(response.indexOf("new") != -1){ 
         $('#applicantId').val(id); 
         $('#fbfirstName').val(firstName); 
         $('#fblastName').val(lastName); 
         $('#fbemail').val(email); 
         $('#applicantRegisterForm').submit(); 
        } 
        else{ 
         window.location = 'applicantHome.jsp?applicantId='+id; 
        } 
       } 
     }; 
     xmlhttp.open("POST", "login?mode=2", true); 
     xmlhttp.setRequestHeader("Content-type", 
       "application/x-www-form-urlencoded"); 
     xmlhttp.send(params); 
    } 

    function fbAsyncInit(){ 
     FB.init({appId: '307292312637177', status: true, cookie: true, xfbml: true}); 
     FB.getLoginStatus(function(response) { 
      var stringArr=JSON.stringify(response); 
       if (response.status == 'connected') { 
        fbLoginStatus = true; 
        showLogoutText(); 
       } 
       else if (response.status == 'not_authorized') { 
        fbLoginStatus = false; 
       } 
       else { 
       // the user isn't even logged in to Facebook. 
        fbLoginStatus = false; 
       } 
      }); 
     FB.Event.subscribe('auth.login', function(response) { 
      FB.api('/me', function(user) { 
       if (user) { 
        if(user.id!=undefined){ 
        onFaceBookAuth(user); 
        } 
       } 
       }); 
     }); 
     FB.Event.subscribe('auth.logout', function(response) { 
     }); 

     FB.api('/me', function(user) { 
      if (user) { 
       if(user.id!=undefined){ 
       onFaceBookAuth(user); 
       } 
      } 
      }); 
    }; 

    </script> 
</head> 
<body> 
    <div id="facebookLogin" class="fb-login-button" onclick="fbAsyncInit()" data-scope="email"> 
          Login with Facebook</div> 
</body> 
</html> 

弹出即将进入Facebook的凭据。但是,之后它不会重定向到同一个应用程序。

这个问题与“appId”有关吗?因为我给了随机数,我不知道应该给“appId”什么。如何为我的应用程序获取appId?

在此先感谢

回答

0

是的,AppId很重要。该的AppId您的应用程序可以从Facebook的开发者页面:https://developers.facebook.com/apps

您需要注册一个应用程序,然后才能使用Facebook的API进行交互,并且为了OAuth的正确重定向,则需要与供应它指向您的网站的路径,您可以在上面的url中找到详细信息表单。

还有更多关于在根网址上为Facebook开发的信息:https://developers.facebook.com/

+0

我在本地测试。目前它不是活的。那么,localhost的url注册会起作用吗? – user1673257

+0

否。要测试oAuth集成,您需要使用可公开访问的网址。 – JcFx

+1

@JFFx,这是不正确的。 Auth流程的所有相关部分发生在您的浏览器内,并且您的浏览器知道哪台机器是本地主机。使用当前仅在本地主机上运行的应用进行身份验证非常好,我一直在本地开发时一直这样做。 – CBroe

相关问题