Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Facebook php SDK中打开身份验证对话框_Php_Facebook_Sdk_Oauth - Fatal编程技术网

在Facebook php SDK中打开身份验证对话框

在Facebook php SDK中打开身份验证对话框,php,facebook,sdk,oauth,Php,Facebook,Sdk,Oauth,我正在使用php SDK将Facebook connect集成到我的网站中。。一切都很好,除了我想重新定向到facebook进行身份验证,我想打开OAuth对话框。。当前Im使用以下url进行身份验证,。。它重定向到facebook,但不打开OAuth Dailog https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXX&redirect_uri=http%3A%2F%2Fwww.setsail2nz.com.au%2Fmicros

我正在使用php SDK将Facebook connect集成到我的网站中。。一切都很好,除了我想重新定向到facebook进行身份验证,我想打开OAuth对话框。。当前Im使用以下url进行身份验证,。。它重定向到facebook,但不打开OAuth Dailog

https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXX&redirect_uri=http%3A%2F%2Fwww.setsail2nz.com.au%2Fmicrosite%2Ffbalbums.php%3Fpid%3D1&state=ad89eddd7f71e7337785f604710c97e8&scope=user_photos%2Cpublish_stream%2Cmanage_friendlists%2Cemail&display=popup

有什么想法吗

编辑: 我知道如何使用Facebook JS SDK实现这一点。。但是有没有一种方法可以用php实现呢

编辑2:好的,现在我正在使用JSSDK,但仍然没有打开对话框。。这是我的密码

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
     appId      : 'XXXXXXXXXX', // App ID
     status     : true, // check login status
     cookie     : true, // enable cookies to allow the server to access the session
     xfbml      : true,  // parse XFBML
     oauth   : true // enables OAuth 2.0
    });
  };

  // Load the SDK Asynchronously
  (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)
    {
        alert(response);

    },{perms: "user_photos,publish_stream,manage_friendlists,email"});
  }
</script>

window.fbAsyninit=函数(){
FB.init({
appId:'xxxxxxxxx',//应用程序ID
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true,//解析xfbml
oauth:true//启用oauth 2.0
});
};
//异步加载SDK
(职能(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);
}(文件);
函数fblogin()
{
FB.登录(功能(响应)
{
警报(响应);
}{perms:“用户照片、发布流、管理好友列表、电子邮件”});
}
使用Javascript SDK

和FB.login,传递您所需的权限

使用Javascript SDK


和FB.login,传递所需的权限来回答有关使用PHP SDK检测对话框响应的问题:

问题是getloginURL只接受一个成功或错误时使用的URL参数。我需要检测用户是否在“权限”对话框上单击了“确定”或“取消”,以便我可以重定向到“预权限”对话框页面,或显示正确的登录内容

我所做的只是检查url参数中是否存在“error\u reason”,以及错误是否为“user\u denied”,并采取适当的措施。也许有更好的办法,但这对我很有效

<?php
    //Facebook Authentication
    $user = $facebook->getUser();

    //Get Login URL
    $loginUrl = $facebook->getLoginUrl(); 

    //User is logged in
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }

    //User is not logged in
    if (!$user) {
        //Check if error_reason was generated and if the user denied login
        if (isset($_REQUEST['error_reason']) && ($_REQUEST['error_reason']=='user_denied')) {
            //user cancelled permissions dialog thus not logged in to app, redirect elsewhere
            echo "<script type='text/javascript'>top.location.href = 'YOUR REDIRECT URL';</script>";
            exit;
        } else {
            //user not logged in so initiate permissions dialog
            echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
            exit;
        }
    }

    //get user basic description
    $userInfo = $facebook->api("/$user");
?>

要回答有关使用PHP SDK检测对话框响应的问题,请执行以下操作:

问题是getloginURL只接受一个成功或错误时使用的URL参数。我需要检测用户是否在“权限”对话框上单击了“确定”或“取消”,以便我可以重定向到“预权限”对话框页面,或显示正确的登录内容

我所做的只是检查url参数中是否存在“error\u reason”,以及错误是否为“user\u denied”,并采取适当的措施。也许有更好的办法,但这对我很有效

<?php
    //Facebook Authentication
    $user = $facebook->getUser();

    //Get Login URL
    $loginUrl = $facebook->getLoginUrl(); 

    //User is logged in
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }

    //User is not logged in
    if (!$user) {
        //Check if error_reason was generated and if the user denied login
        if (isset($_REQUEST['error_reason']) && ($_REQUEST['error_reason']=='user_denied')) {
            //user cancelled permissions dialog thus not logged in to app, redirect elsewhere
            echo "<script type='text/javascript'>top.location.href = 'YOUR REDIRECT URL';</script>";
            exit;
        } else {
            //user not logged in so initiate permissions dialog
            echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
            exit;
        }
    }

    //get user basic description
    $userInfo = $facebook->api("/$user");
?>

是的,我知道javascript。。但是有什么方法可以用PHPSDK实现吗?是的,我知道javascript。。但是有什么方法可以用PHPSDK实现吗?