<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>运达&#039;s  blog &#187; 社会化登录</title>
	<atom:link href="https://www.yunda51.com/?feed=rss2&#038;tag=%E7%A4%BE%E4%BC%9A%E5%8C%96%E7%99%BB%E5%BD%95" rel="self" type="application/rss+xml" />
	<link>https://www.yunda51.com</link>
	<description>运达的博客</description>
	<lastBuildDate>Wed, 12 Nov 2025 07:58:26 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.19</generator>
	<item>
		<title>通过百度社会化登录</title>
		<link>https://www.yunda51.com/?p=1154</link>
		<comments>https://www.yunda51.com/?p=1154#comments</comments>
		<pubDate>Tue, 14 Jan 2014 03:07:33 +0000</pubDate>
		<dc:creator><![CDATA[运达]]></dc:creator>
				<category><![CDATA[php技术]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[百度]]></category>
		<category><![CDATA[社会化登录]]></category>

		<guid isPermaLink="false">http://www.yunda51.com/?p=1154</guid>
		<description><![CDATA[社会化登录在现在大多数的网站中都会存在的，比较火的有 新浪、人人、QQ、 如果挨个对这些平台做开发的话，会花费<a href="https://www.yunda51.com/?p=1154" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>社会化登录在现在大多数的网站中都会存在的，比较火的有 新浪、人人、QQ、 如果挨个对这些平台做开发的话，会花费开发者很长的时间来开发和测试。当然了，百度社会化服务解决了这个问题。<br />
直接代码：</p>
<pre class="wp-code-highlight prettyprint">
  &lt;?php
/**
 * WebApp - 团购第三方登录model
 */
class WeboauthModel{
	/**
	 * 第三方登录
	 */
	public function loginAppUser(){
		$accesstoken=$this-&gt;requestAccessToken($_GET[&#039;code&#039;]);
		if($accesstoken==false){
			return false;
		}
		$userinfo=$this-&gt;requestUserInfo($accesstoken[&#039;access_token&#039;]); //返回第三方用户信息
		var_dump($userinfo);
	}
	public function loginUser($phone,$password){
		$passport=model(&#039;Passport&#039;);
		$result=$passport-&gt;loginLocal(phone,$password);
		if(!$result){
			$status = 0; 
			$info	= $passport-&gt;getError();
			$data 	= 0;
		}else{
			$status = 1;
			$info 	= $passport-&gt;getSuccess();
			$data 	= ($GLOBALS[&#039;ts&#039;][&#039;site&#039;][&#039;home_url&#039;])?$GLOBALS[&#039;ts&#039;][&#039;site&#039;][&#039;home_url&#039;]:0;
		}
		return array(&#039;status&#039;=&gt;$status,&#039;info&#039;=&gt;$info,&#039;data&#039;=&gt;$data);
	}
    /**
     * 获取AccessToKen 
     */
    private function requestAccessToken($code){
		$url = &#039;https://openapi.baidu.com/social/oauth/2.0/token&#039;;
        $client_id = &#039;API Key&#039;;
        $client_secret = &#039;Secret Key&#039;;
        $redirect_uri=&#039;回调地址、与应用中回掉地址相同&#039;;
        $params = array(
            &#039;grant_type&#039;    =&gt;  &#039;authorization_code&#039;,
            &#039;client_id&#039;     =&gt;  $client_id,
            &#039;client_secret&#039; =&gt;  $client_secret,
            &#039;redirect_uri&#039;  =&gt;  $redirect_uri,
            &#039;code&#039;          =&gt;  $code,
        );
        $ch = curl_init();
    	$curl_opts = array(
			CURLOPT_CONNECTTIMEOUT	=&gt; 3,
			CURLOPT_TIMEOUT			=&gt; 5,
			CURLOPT_USERAGENT		=&gt; &#039;baidu-apiclient-php-2.0&#039;,
	    	CURLOPT_HTTP_VERSION	=&gt; CURL_HTTP_VERSION_1_1,
	    	CURLOPT_RETURNTRANSFER	=&gt; true,
	    	CURLOPT_HEADER			=&gt; false,
	    	CURLOPT_FOLLOWLOCATION	=&gt; false,
		);
		if (stripos($url, &#039;https://&#039;) === 0) {
			$curl_opts[CURLOPT_SSL_VERIFYPEER] = false;
		}	
		$query = http_build_query($params, &#039;&#039;, &#039;&amp;&#039;);
		$delimiter = strpos($url, &#039;?&#039;) === false ? &#039;?&#039; : &#039;&amp;&#039;;
	   	$curl_opts[CURLOPT_URL] = $url . $delimiter . $query;
	   	$curl_opts[CURLOPT_POST] = false;
    	curl_setopt_array($ch, $curl_opts);
        $result = curl_exec($ch);
    	if ($result === false) {
            curl_close($ch);
            return false;
    	} elseif (empty($result)) {
    		$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    		if ($http_code != 200) {
    			curl_close($ch);
    			return false;
    		}
    	}  
	    curl_close($ch);
       return  json_decode($result, true);
    }
    /**
     * 返回第三方用户信息
     * @param $access_token
     */
    private function requestUserInfo($access_token){
    	$url=&quot;https://openapi.baidu.com/social/api/2.0/user/info?access_token={$access_token}&quot;;
		$result=file_get_contents($url);
    	$result =json_decode($result,true); 
    	return $result;
    }
}//end class
</pre>
<p><strong>回调文件：</strong></p>
<pre class="wp-code-highlight prettyprint">
   &lt;?php
	// 第三方登录回调方法
	include(&#039;./social/WeboauthModel.class.php&#039;);
	$token = $_GET[&#039;code&#039;];
	$Weboauth = new WeboauthModel();
	$Weboauth-&gt;loginAppUser($token);
   ?&gt;
</pre>
<pre class="wp-code-highlight prettyprint">
//返回值为json、做了json_decode();
array(16) {
  [&quot;username&quot;]=&gt;
  string(6) &quot;真名、&quot;
  [&quot;sex&quot;]=&gt;
  string(1) &quot;1&quot;
  [&quot;birthday&quot;]=&gt;
  string(4) &quot;1991&quot;
  [&quot;tinyurl&quot;]=&gt;
  string(75) &quot;http://hdn.xnimg.cn/photos/hdn321/20120101/1950/tiny_t6Jq_119344n019117.jpg&quot;
  [&quot;headurl&quot;]=&gt;
  string(80) &quot;http://hdn.xnimg.cn/photos/hdn121/20120101/1950/h_head_KXXQ_7a90000220ec2f75.jpg&quot;
  [&quot;mainurl&quot;]=&gt;
  string(80) &quot;http://hdn.xnimg.cn/photos/hdn121/20120101/1950/h_main_eBB8_7a90000220ec2f75.jpg&quot;
  [&quot;hometown_location&quot;]=&gt;
  array(2) {
    [&quot;province&quot;]=&gt;
    string(6) &quot;河北&quot;
    [&quot;city&quot;]=&gt;
    string(9) &quot;邯郸市&quot;
  }
  [&quot;work_history&quot;]=&gt;
  array(1) {
    [0]=&gt;
    array(4) {
      [&quot;name&quot;]=&gt;
      string(18) &quot;北京一起新游&quot;
      [&quot;time&quot;]=&gt;
      string(0) &quot;&quot;
      [&quot;industry&quot;]=&gt;
      NULL
      [&quot;job&quot;]=&gt;
      NULL
    }
  }
  [&quot;university_history&quot;]=&gt;
  string(24) &quot;注释&quot;
  [&quot;hs_history&quot;]=&gt;
  array(0) {
  }
  [&quot;province&quot;]=&gt;
  string(0) &quot;&quot;
  [&quot;city&quot;]=&gt;
  string(0) &quot;&quot;
  [&quot;is_verified&quot;]=&gt;
  string(1) &quot;1&quot;
  [&quot;media_uid&quot;]=&gt;
  string(9) &quot;-------&quot;
  [&quot;media_type&quot;]=&gt;
  string(6) &quot;renren&quot;
  [&quot;social_uid&quot;]=&gt;
  int(------)
}
</pre>
<p><strong>百度社会化服务参考、api地址</strong><br />
http://developer.baidu.com/dev#/appinfo/1728015/soc_login_select // 创建样式<br />
<strong>下面我们提供一段简单的PHP示例代码，来介绍应该如何实现"社会化服务回调地址"这个接口。</strong></p>
<p>http://developer.baidu.com/wiki/index.php?title=docs/social/guide/web_login/web_login5</p>
<p><strong>api列表注意回调地址应与应用地址相同</strong></p>
<p>http://developer.baidu.com/wiki/index.php?title=docs/social/api/list</p>
<p>转载请注明转自:<a href="http://www.yunda51.com">运达's blog</a>  原文地址：<a href="http://www.yunda51.com/1154.html">http://www.yunda51.com/1154.html</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.yunda51.com/?feed=rss2&#038;p=1154</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
