thinkphp 实现三方登陆实例



indexAction 控制器里面

/**
 * qq登陆
 */
public function QQLogin()
{
    mysdk_Log::log('ThreeLoginPlatform', $_POST, mysdk_Log::LIVE_API, __FILE__, __LINE__);

    $openid = trim(I('openid', null));
    $token = trim(I('token'));
    $device = trim(I('device'));
    $nickname = trim(I('nickname'));
    $userPhoto = trim(I('userPhoto'));

    if (!isset($userPhoto) || $userPhoto == '') {
        $userPhoto = C('PIC_MONGOC_HOST') . C('Default_avatar');
    }

    if (!$openid || !$token || !$device || !$nickname || !$userPhoto) {
        json_return_array(array('resultcode' => 410, 'errormsg' => '', 'result' => ''));
    }

    $result = D('User')->LoginThreePlatform(1, array('openid' => $openid, 'token' => $token, 'device' => $device, 'nickname' => $nickname, 'userPhoto' => $userPhoto));
    json_return_array($result);
    //return $this->BackJson($result);
}

/**
 * 微博登陆
 */
public function WeiBoLogin()
{
    mysdk_Log::log('ThreeLoginPlatform', $_POST, mysdk_Log::LIVE_API, __FILE__, __LINE__);

    $openid = trim(I('openid', null));
    $token = trim(I('token'));
    $device = trim(I('device'));
    $nickname = trim(I('nickname'));
    $userPhoto = trim(I('userPhoto'));

    if (!isset($userPhoto) || $userPhoto == '') {
        $userPhoto = C('PIC_MONGOC_HOST') . C('Default_avatar');
    }

    if (!$openid || !$token || !$device || !$nickname || !$userPhoto) {
        json_return_array(array('resultcode' => 410, 'errormsg' => '', 'result' => ''));
    }

/**
 * 微信登陆
 */
public function WeiXinLogin()
{
    $response = array(
        'resultcode' => 400,
        'errormsg' => '程序版本过期,请升级',
        'result' => array()
    );
    json_return_array($response);
    mysdk_Log::log('ThreeLoginPlatform', $_POST, mysdk_Log::LIVE_API, __FILE__, __LINE__);

    $openid = trim(I('openid', null));
    $token = trim(I('token'));
    $device = trim(I('device'));
    $nickname = trim(I('nickname'));
    $userPhoto = trim(I('userPhoto'));

    if (!isset($userPhoto) || $userPhoto == '') {
        $userPhoto = C('PIC_MONGOC_HOST') . C('Default_avatar');
    }

    if (!$openid || !$token || !$device || !$nickname || !$userPhoto) {
        json_return_array(array('resultcode' => 410, 'errormsg' => '', 'result' => ''));
    }


    $result = D('User')->LoginThreePlatform(2, array('openid' => $openid, 'token' => $token, 'device' => $device, 'nickname' => $nickname, 'userPhoto' => $userPhoto));

    mysdk_Log::log('ThreeLoginPlatform', $result, mysdk_Log::LIVE_API, __FILE__, __LINE__);
    json_return_array($result);
    //return $this->BackJson($result);
}

UserModel 里面

function LoginThreePlatform($type, $loginInfo)
    {
        $response = array(
            'resultcode' => 200,
            'errormsg' => '',
            'result' => array()
        );
        Vendor('ThreeLoginOAuth.OAuth');
        switch ($type) {
            case 1:
                $OAuthObj = OAuth::validateUserToken('QQ', $loginInfo);
                if (false == $OAuthObj) {
                    mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);
                    $response['resultcode'] = 409;
                    return $response;

                }
                break;
            case 3:
                $OAuthObj = OAuth::validateUserToken('Weibo', $loginInfo);
                if (false == $OAuthObj) {
                    mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);
                    $response['resultcode'] = 409;
                    return $response;

                }
                break;
            case 2:
                $OAuthObj = OAuth::validateUserToken('Weixin', $loginInfo);
                if (false == $OAuthObj) {
                    mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);
                    $response['resultcode'] = 409;
                    return $response;

                }
                break;

            default:
                return false;
        }
        $openid = $loginInfo['openid'];
        $token = $loginInfo['token'];
        $device = $loginInfo['device'];
        $nickName = $loginInfo['nickname'];
        $userPhoto = $loginInfo['userPhoto'];

        $ret = D('DataCenter')->sdkLogin($nickName, $openid, $userPhoto, $device, $type);

        if ($ret) {
            $ret['openid'] = $openid;
            $response['result'] = $ret;
        } else {
            $response['resultcode'] = 404; //数据中心返回false
            return $response;
        }

        $where['usertt'] = $ret['TTnum'];
        $where['userid'] = $ret['userID'];

        $user = M('MemberInfo')->where($where)->find();
        mysdk_Log::log('ThreeLoginPlatform', "find userinfo:" . json_encode($user),
            mysdk_Log::LIVE_API, __FILE__, __LINE__);

        if (empty($user)) {

            $initdate = array();
            $initdate ['userid'] = $ret['userID'];
            $initdate ['vip_grow'] = 0;
            $initdate ['downscore'] = 0;


            $initdate ['usertt'] = $ret['TTnum'];

            mysdk_Log::log('ThreeLoginPlatform', "add new userinfo:" . json_encode($initdate),
                mysdk_Log::LIVE_API, __FILE__, __LINE__);

            $initmember_info = M('MemberInfo')->add($initdate);
            if (!$initmember_info) {
                mysdk_Log::log('ThreeLoginPlatform', "add new user " . $ret['userID'] . " failed",
                    mysdk_Log::LIVE_API, __FILE__, __LINE__);

                $response['resultcode'] = 406;
                return $response;

            }
            mysdk_Log::log('ThreeLoginPlatform', "add new user " . $ret['userID'] . " successfully",
                mysdk_Log::LIVE_API, __FILE__, __LINE__);

            mysdk_RMS::setUserInfo($ret ['userID']);
        }

        mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);
        return $response;

    }


<?php

class WeixinOAuth extends OAuth
{
    private $WEIXINGETOPENIDURL = "https://api.weixin.qq.com/sns/userinfo";


    /*
    *
    *$info=array(
    *token,
    *openid,
    *
    *)
    * 
     */
    function validateToken(&$info)
    {
        $token = $info['token'];
        $openid = $info['openid'];
        mysdk_Log::log('ThreeLoginPlatform', $info, mysdk_Log::LIVE_API, __FILE__, __LINE__);

        $response = $this->http($this->WEIXINGETOPENIDURL, array('openid' => $openid, 'access_token' => $token));
        $data = json_decode($response, true);
        mysdk_Log::log('ThreeLoginPlatform', $data, mysdk_Log::LIVE_API, __FILE__, __LINE__);

        if (!isset($data['openid']) || $data['openid'] != $openid) {
            mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);

            return false;
        } else {
            $info['openid'] = $data['unionid'];
            return true;
        }
    }
}

?>


QQ登陆


<?php

class QQOAuth extends OAuth
{
    private $AppKey = '101200000';
    private $AppSecret = '0dda7ff5c3c36ecaa22cce5208500000';
    private $QQGETOPENIDURL = "https://graph.qq.com/oauth2.0/me";

    function validateToken(&$info)
    {
        $token = $info['token'];
        $openid = $info['openid'];
        mysdk_Log::log('ThreeLoginPlatform', $info, mysdk_Log::LIVE_API, __FILE__, __LINE__);

        $response = $this->http($this->QQGETOPENIDURL, array('access_token' => $token));
        $data = json_decode(trim(substr($response, 9), " );\n"), true);
        mysdk_Log::log('ThreeLoginPlatform', $data, mysdk_Log::LIVE_API, __FILE__, __LINE__);

        if (!isset($data['openid']) || $data['openid'] != $openid) {
            mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);

            return false;
        } else {
            return true;
        }
    }
}


微博登陆


<?php

class WeiboOAuth extends OAuth
{
    private $AppKey = '101201000';
    private $AppSecret = '0dda7ff5c3c36ecaa22cce52085000';
    private $WEIBOGETOPENIDURL = "https://api.weibo.com/oauth2/get_token_info";

    function validateToken(&$info)
    {
        $token = $info['token'];
        $openid = $info['openid'];
        mysdk_Log::log('ThreeLoginPlatform', $info, mysdk_Log::LIVE_API, __FILE__, __LINE__);


        $response = $this->http($this->WEIBOGETOPENIDURL, array('access_token' => $token), 'post');
        $data = json_decode($response, true);

        mysdk_Log::log('ThreeLoginPlatform', $response, mysdk_Log::LIVE_API, __FILE__, __LINE__);
        if (isset($data['uid']) && ($data['uid'] == $openid)) {
            mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);

            return true;
        } else {
            mysdk_Log::log('ThreeLoginPlatform', __LINE__, mysdk_Log::LIVE_API, __FILE__, __LINE__);

            return false;
        }

    }
}

?>


1. 相关文件以及路径


图一










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值