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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30325