apeblog/vendor/liliuwei/thinkphp-social/src/GetInfo.php

280 lines
10 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 获取第三方用户信息类
*/
namespace liliuwei\social;
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("获取淘宝用户信息失败");
}
}
//Douyin用户信息
public static function douyin($token)
{
$douyin = Oauth::getInstance('douyin', $token);
$data = $douyin->call('oauth/userinfo');
$data = $data['data'];
if (isset($data['open_id'])) {
$userInfo['type'] = 'douyin';
$userInfo['name'] = $data['nickname'];
$userInfo['nickname'] = $data['nickname'];
$userInfo['avatar'] = $data['avatar'];
$userInfo['openid'] = $data['open_id'];
$userInfo['unionid'] = $data['union_id'];
$userInfo['gender'] = $data['sex']==1?'男':'女';
$userInfo['city'] = $data['city'];
$userInfo['province'] = $data['province'];
$userInfo['country'] = $data['country'];
return $userInfo;
} else {
throw new \Exception("获取抖音用户信息失败");
}
}
//Xiaomi用户信息
public static function xiaomi($token)
{
$xiaomi = Oauth::getInstance('xiaomi', $token);
$data = $xiaomi->call('user/profile');
$data = $data['data'];
if (isset($data['unionId'])) {
$userInfo['type'] = 'xiaomi';
$userInfo['name'] = $data['miliaoNick'];
$userInfo['nickname'] = $data['miliaoNick'];
$userInfo['avatar'] = $data['miliaoIcon'];
$userInfo['openid'] = array_key_exists('userId',$data)?$data['userId']:$data['unionId'];
$userInfo['unionid'] = $data['unionId'];
return $userInfo;
} else {
throw new \Exception("获取小米用户信息失败");
}
}
//Dingtalk用户信息
public static function dingtalk($token)
{
$data = $token;
if ($data['openid']) {
$userInfo['type'] = 'dingtalk';
$userInfo['name'] = $data['nick'];
$userInfo['nickname'] = $data['nick'];
$userInfo['avatar'] = '';
$userInfo['openid'] = $data['openid'];
$userInfo['unionid'] = $data['unionid'];
return $userInfo;
} else {
throw new \Exception("获取钉钉用户信息失败");
}
}
}