File: /www/wwwroot//crm.jmfdbn.com/addons/synclogin/ThinkSDK/GetInfo.php
<?php
// +----------------------------------------------------------------------
// | Yzncms [ 御宅男工作室 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2018 http://yzncms.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 御宅男 <530765310@qq.com>
// +----------------------------------------------------------------------
/**
* 获取第三方用户信息类
*/
namespace addons\synclogin\ThinkSDK;
final class GetInfo
{
public static function getInstance($type, $token)
{
return self::$type($token);
}
//QQ用户信息
public static function qq($token)
{
$qq = Oauth::getInstance('qq', $token);
$data = $qq->call('user/get_user_info');
if ($data['ret'] == 0) {
$userInfo['type'] = 'qq';
$userInfo['name'] = $data['nickname'];
$userInfo['nickname'] = $data['nickname'];
$userInfo['avatar'] = $data['figureurl_2'];
$userInfo['gender'] = $data['gender'];
return $userInfo;
} else {
throw new \Exception("获取腾讯QQ用户信息失败:{$data['msg']}");
}
}
//微信用户信息
public static function weixin($token)
{
$weixin = Oauth::getInstance('weixin', $token);
$data = $weixin->call('sns/userinfo');
if (isset($data['errcode'])) {
throw new \Exception("获取微信用户信息失败:errcode:{$data['errcode']} errmsg: {$data['errmsg']}");
}
if ($data['openid']) {
$userInfo['type'] = 'weixin';
$userInfo['name'] = $data['nickname'];
$userInfo['nickname'] = $data['nickname'];
$userInfo['avatar'] = $data['headimgurl'];
$userInfo['openid'] = $data['openid'];
$userInfo['unionid'] = $data['unionid'];
$userInfo['province'] = $data['province'];
$userInfo['city'] = $data['city'];
$userInfo['country'] = $data['country'];
$userInfo['sex'] = $data['sex'] == 1 ? '男' : '女';
return $userInfo;
} else {
throw new \Exception("获取微信用户信息失败");
}
}
//新浪微博用户信息
public static function sina($token)
{
$sina = Oauth::getInstance('sina', $token);
$data = $sina->call('users/show', "uid={$sina->openid()}");
if ($data['id']) {
$userInfo['type'] = 'sina';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['screen_name'];
$userInfo['avatar'] = $data['avatar_large'];
$userInfo['openid'] = $data['id'];
$userInfo['idstr'] = $data['idstr'];
$userInfo['province'] = $data['province'];
$userInfo['city'] = $data['city'];
$userInfo['location'] = $data['location'];
$userInfo['created_at'] = $data['created_at'];
$userInfo['gender'] = $data['gender'] == 'm' ? '男' : ($data['gender'] == 'f' ? '女' : '未知');
$userInfo['followers_count'] = $data['followers_count'];
$userInfo['friends_count'] = $data['friends_count'];
$userInfo['statuses_count'] = $data['statuses_count'];
$userInfo['favourites_count'] = $data['favourites_count'];
$userInfo['description'] = $data['description'];
$userInfo['url'] = $data['url'];
$userInfo['profile_url'] = $data['profile_url'];
return $userInfo;
} else {
throw new \Exception("获取新浪微博用户信息失败:{$data['error']}");
}
}
//Baidu用户信息
public static function baidu($token)
{
$baidu = Oauth::getInstance('baidu', $token);
$data = $baidu->call('passport/users/getInfo');
if (isset($data['userid'])) {
$userInfo['type'] = 'baidu';
$userInfo['name'] = $data['username'];
$userInfo['nickname'] = isset($data['realname']) ? $data['realname'] : '';
$userInfo['avatar'] = 'http://tb.himg.baidu.com/sys/portrait/item/' . $data['portrait'];
$userInfo['openid'] = $data['userid'];
$userInfo['sex'] = $data['sex'] == 1 ? '男' : '女';
return $userInfo;
} else {
throw new \Exception("获取Baidu用户信息失败");
}
}
//Gitee用户信息
public static function gitee($token)
{
$google = Oauth::getInstance('gitee', $token);
$data = $google->call('user');
if (isset($data['id'])) {
$userInfo['type'] = 'gitee';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['login'];
$userInfo['avatar'] = $data['avatar_url'];
$userInfo['openid'] = $data['id'];
$userInfo['html_url'] = $data['html_url'];
$userInfo['blog'] = $data['blog'];
$userInfo['email'] = $data['email'];
return $userInfo;
} else {
throw new \Exception("获取Gitee用户信息失败");
}
}
//Github用户信息
public static function github($token)
{
$google = Oauth::getInstance('github', $token);
$data = $google->call('user');
if (isset($data['id'])) {
$userInfo['type'] = 'github';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['login'];
$userInfo['avatar'] = $data['avatar_url'];
$userInfo['openid'] = $data['id'];
$userInfo['html_url'] = $data['html_url'];
$userInfo['blog'] = $data['blog'];
$userInfo['email'] = $data['email'];
return $userInfo;
} else {
throw new \Exception("获取Gitee用户信息失败");
}
}
//Google用户信息
public static function google($token)
{
$google = Oauth::getInstance('google', $token);
$data = $google->call('userinfo');
if (isset($data['id'])) {
$userInfo['type'] = 'google';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['name'];
$userInfo['avatar'] = $data['picture'];
$userInfo['openid'] = $data['id'];
$userInfo['given_name'] = $data['given_name'];
$userInfo['family_name'] = $data['family_name'];
$userInfo['locale'] = $data['locale'];
$userInfo['email'] = $data['email'];
return $userInfo;
} else {
throw new \Exception("获取Google用户信息失败");
}
}
//Facebook用户信息
public static function facebook($token)
{
$facebook = Oauth::getInstance('facebook', $token);
$data = $facebook->call('me', 'fields=name,picture,first_name,last_name,short_name,email');
if (isset($data['id'])) {
$userInfo['type'] = 'facebook';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['name'];
$userInfo['avatar'] = $data['picture']['data']['url'];
$userInfo['openid'] = $data['id'];
$userInfo['first_name'] = $data['first_name'];
$userInfo['last_name'] = $data['last_name'];
$userInfo['short_name'] = $data['short_name'];
$userInfo['email'] = $data['email'];
return $userInfo;
} else {
throw new \Exception("获取Facebook用户信息失败");
}
}
//Oschina用户信息
public static function oschina($token)
{
$oschina = Oauth::getInstance('oschina', $token);
$data = $oschina->call('action/openapi/user');
if (isset($data['id'])) {
$userInfo['type'] = 'gitee';
$userInfo['name'] = $data['name'];
$userInfo['nickname'] = $data['name'];
$userInfo['avatar'] = $data['avatar'];
$userInfo['openid'] = $data['id'];
$userInfo['email'] = $data['email'];
$userInfo['location'] = $data['location'];
return $userInfo;
} else {
throw new \Exception("获取Gitee用户信息失败");
}
}
//Taobao用户信息
public static function taobao($token)
{
$data = $token;
if (isset($data['taobao_user_id'])) {
$userInfo['type'] = 'taobao';
$userInfo['name'] = urldecode($data['taobao_user_nick']);
$userInfo['nickname'] = urldecode($data['taobao_user_nick']);
$userInfo['avatar'] = '';
$userInfo['openid'] = $data['taobao_user_id'];
$userInfo['taobao_open_uid'] = $data['taobao_open_uid'];
return $userInfo;
} else {
throw new \Exception("获取淘宝用户信息失败");
}
}
}