Facebook访问令牌“;您使用的是不兼容的web浏览器“;使用php

Facebook访问令牌“;您使用的是不兼容的web浏览器“;使用php,php,facebook,facebook-graph-api,user-agent,Php,Facebook,Facebook Graph Api,User Agent,我尝试通过我的(创建中的)facebook类从facebook获取访问令牌。但它告诉我,我有一个“你正在使用一个不兼容的网络浏览器”。我怎样才能通过这个错误?我试图设置一个http用户代理,但它不起作用 谢谢你的帮助 在这两者之间,我不想要facebook sdk,我想了解我所做的一切。可能吗 $_COOKIE['evo-fbAuth'] = false; $_SERVER['HTTP_USER_AGENT'] = "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2)

我尝试通过我的(创建中的)facebook类从facebook获取访问令牌。但它告诉我,我有一个“你正在使用一个不兼容的网络浏览器”。我怎样才能通过这个错误?我试图设置一个http用户代理,但它不起作用

谢谢你的帮助

在这两者之间,我不想要facebook sdk,我想了解我所做的一切。可能吗

$_COOKIE['evo-fbAuth'] = false; $_SERVER['HTTP_USER_AGENT'] = "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"; class facebook{ private $_appID; private $_appSECRET; private $_code = null; private $_accesstoken = null; private $_urlAuth = 'https://www.facebook.com/dialog/oauth'; function __construct($appID,$appSECRET){ $this->_appID = $appID; $this->_appSECRET = $appSECRET; } public function fbauth($param){ if(!isset($_GET['code'])){ if(isset($param['redirect_uri']) && isset($param['scope'])){ $urlAuth = $this->_urlAuth; $urlAuth .= '?client_id='.$this->_appID; $param['redirect_uri'] = $param['redirect_uri']; foreach($param as $key => $value){ $urlAuth .= '&'.$key.'='.$value; } if(!$this->authCookie()) header('Location: '.$urlAuth); }else{ return false; } }else{ $this->_code = $_GET['code']; $this->getAccessTok($param); } } private function getAccessTok($param){ if($this->_code !== null){ $urlTok = $this->_urlAuth.'/access_token'; $urlTok .= '?client_id='.$this->_appID; $urlTok .= '&redirect_uri='.$param['redirect_uri']; $urlTok .= '&client_secret='.$this->_appSECRET; $urlTok .= '&code='.$this->_code; print_r(file_get_contents($urlTok)); } } private function authCookie(){ if($_COOKIE['evo-fbAuth'] == true){ return true; }else{ setcookie('evo-fbAuth',true,600); return false; } } } $fb = new facebook('**************','****************************'); $param = array( 'redirect_uri'=>'http://localhost/facebook-auth/MOI_facebook.class.php', 'scope'=>'read_stream,publish_stream,publish_actions,manage_pages,email,user_birthday' ); $fb->fbauth($param); $\u COOKIE['evo-fbAuth']=false; $\u SERVER['HTTP\u USER\u AGENT']=“Mozilla/5.0(Windows NT 5.1;rv:10.0.2)Gecko/20100101 Firefox/10.0.2”; 班级facebook{ 私有$appID; 私人$appSECRET; 私有$_代码=null; private$\u accesstoken=null; 私有$\u urlAuth='0https://www.facebook.com/dialog/oauth'; 函数构造($appID,$appSECRET){ $this->_appID=$appID; $this->_appSECRET=$appSECRET; } 公共函数fbauth($param){ 如果(!isset($\u GET['code'])){ if(isset($param['redirect_uri'])和&isset($param['scope'])){ $urlAuth=$this->\u urlAuth; $urlAuth.='?客户端id='.$this->\u应用id; $param['redirect_uri']=$param['redirect_uri']; foreach($param作为$key=>$value){ $urlAuth.='&'$key.='.$value; } if(!$this->authCookie())头('Location:'。$urlAuth); }否则{ 返回false; } }否则{ $this->_code=$_GET['code']; $this->getAccessTok($param); } } 私有函数getAccessTok($param){ 如果($this->\u代码!==null){ $urlTok=$this->\u urlAuth./access\u token'; $urlTok.='?客户端id='。$this->\u应用id; $urlTok.='&redirect_uri='.$param['redirect_uri']; $urlTok.='&client\u secret='.$this->\u appSECRET; $urlTok.='&code='.$this->\u代码; 打印(文件获取内容($urlTok)); } } 私有函数authCookie(){ 如果($_COOKIE['evo-fbAuth']==true){ 返回true; }否则{ setcookie('evo-fbAuth',true,600); 返回false; } } } $fb=新的facebook(“*************”、“*************************”); $param=数组( '重定向\u uri'=>'http://localhost/facebook-auth/MOI_facebook.class.php', '范围'=>'读取\u流、发布\u流、发布\u操作、管理\u页面、电子邮件、用户\u生日' ); $fb->fbauth($param);
这是因为您在
getAccessTok
函数中为
access\u令牌
检索使用了错误的URL:

// URL you use is $this->_urlAuth.'/access_token'
https://www.facebook.com/dialog/oauth/access_token

// But should be
https://graph.facebook.com/oauth/access_token

非常感谢你!现在我得到了访问令牌的大字符串:D令牌是否总是相同的长度?因为我只想得到access_token=和expire&之间的字符串。。。非常感谢。again@MikeBoutin,您可以使用类似的方法可靠地解析生成的字符串。感谢您的大力帮助!