好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php QQ第三方登陆SDK程序代码 - php高级应用

php QQ第三方登陆SDK程序代码

自己重写的一个php QQ第三方登陆SDK程序代码,官方的不敢恭维了所以自己再写了一个,主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库,反正自己都写了一个了,就拿出来分享下.

什么也不多说,直接上代码,代码如下:

<?php    /**     * QQ开发平台 SDK     * 作者:偶尔陶醉     * blog: HdhCmsTestphpfensi测试数据     */      class  Qq_sdk{         //配置APP参数     private   $app_id  = 你的APP ID;     private   $app_secret  = ‘你的APP_secret’;     private   $redirect  = 你的回调地址;        function  __construct()     {         }         /**     * [get_access_token 获取access_token]     * @param [string] $code [登陆后返回的$_GET['code']]     * @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]     */      function  get_access_token( $code )     {     //获取access_token     $token_url  = ‘https: //graph.qq测试数据/oauth2.0/token?grant_type=authorization_code&’     . ‘client_id=’ .  $this ->app_id . ‘&redirect_uri=’ . urlencode( $this ->redirect) //回调地址     . ‘&client_secret=’ .  $this ->app_secret . ‘&code=’ .  $code ;     $token  =  array ();     //expires_in 为access_token 有效时间增量      parse_str ( $this ->_curl_get_content( $token_url ),  $token );         return   $token ;     }         /**     * [get_open_id 获取用户唯一ID,openid]     * @param [string] $token [授权码]     * @return [array] [成功返回client_id 和 openid ;失败返回error 和 error_msg]     */      function  get_open_id( $token )     {     $str  =  $this ->_curl_get_content(‘https: //graph.qq测试数据/oauth2.0/me?access_token=’ . $token);     if  ( strpos ( $str , [callback]) !== false)     {     $lpos  =  strpos ( $str , [([);     $rpos  =  strrpos ( $str , [)]);     $str  =  substr ( $str ,  $lpos  + 1,  $rpos  –  $lpos  -1);     }     $user  = json_decode( $str , TRUE);         return   $user ;     }         /**     * [get_user_info 获取用户信息]     * @param [string] $token [授权码]     * @param [string] $open_id [用户唯一ID]     * @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]     */      function  get_user_info( $token ,  $open_id )     {         //组装URL     $user_info_url  = ‘https: //graph.qq测试数据/user/get_use   r_info?’    . ‘access_token=’ .  $token      . ‘&oauth_consumer_key=’ .  $this ->app_id     . ‘&openid=’ .  $open_id      . ‘&format=json’;         $info  = json_decode( $this ->_curl_get_content( $user_info_url ), TRUE);         return   $info ;     }     private   function  _curl_get_content( $url )     {     $ch  = curl_init();     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, TRUE);     curl_setopt( $ch , CURLOPT_URL,  $url );     //设置超时时间为3s   //开源代码phpfensi测试数据   curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, 3);     $result  = curl_exec( $ch );     curl_close( $ch );   return   $result ;   }  }  /* end of Qq_sdk.php */    ?> 

使用方法:在你网站上放置超链接,地址为:https://graph.qq测试数据/oauth2.0/authorize?response_type=code&client_id=你的APP_ID&redirect_uri=你的回调地址.

在回调地址上调用我上面这个qq_sdk即可.

demo代码如下:

if ( empty empty ( $_GET [ 'code' ])) { exit (‘参数非法’); }     include (‘qq_sdk’);     $qq_sdk  =  new  Qq_sdk();     $token  =  $qq_sdk ->get_access_token( $_GET [ 'code' ]);     print_r( $token );     $open_id  =  $qq_sdk ->get_open_id( $token [ 'access_token' ]);     print_r( $open_id );         $user_info  =  $qq_sdk ->get_user_info( $token [ 'access_token' ],  $open_id [ 'openid' ]);     print_r( $user_info ); 

查看更多关于php QQ第三方登陆SDK程序代码 - php高级应用的详细内容...

  阅读:41次