第三方登录的一些问题

1、app端和网站统一用户的问题

新浪微博:uid微博全站统一,请使用uid作为用户唯一标识, uid通过access_token解析获取。

QQ:需要发送邮件申请打通两个应用的信息,另外注意一点的就是QQ互联下边有人工服务,连接很快的。如果不理解可以找人工。 connect@qq.com<connect@qq.com>发送到这里,

  如果QQ回复:您好,互联已升级打通方案,目前采用unionID作为识别同一用户的标识,请参考附件文档,完成申请表格,回邮为您处理,感谢!

   可以使用https://graph.qq.com/oauth2.0/me?access_token=$accesstoken&unionid=1 这个方法获取用户的unionid。

  另外注意一点的是两个应用获取个人信息的时候,client_id也就是get_user_info里边的oauth_consumer_key

微信:用户的unionid是唯一的。

2、网站项目本身集成(PHP)

QQ:QQ本身有个集成的demo,自己放在项目中配置下,使用一下就可以了,下边这个是CI的一些

  

//qqcallback
    public function qqlogin() {
        require_once './libraries/qqConnectAPI.php';
        $qc = new QC();
        $accesstoken = $qc->qq_callback();
        $openid = $qc->get_openid();
        $unionid_url = "https://graph.qq.com/oauth2.0/me?access_token=$accesstoken&unionid=1";
        $unionid_res = file_get_contents($unionid_url);
        if(strpos($unionid_res, "callback") !== false){

            $lpos = strpos($unionid_res, "(");
            $rpos = strrpos($unionid_res, ")");
            $response = substr($unionid_res, $lpos + 1, $rpos - $lpos -1);
        }
        $response_arr = json_decode($response,TRUE);
        if(empty($response_arr['unionid'])){
            exit('403');
        }
        $unionid = $response_arr['unionid'];
        print_r($unionid);
        exit();
        if(!empty($accesstoken) && !empty($openid)){
            $devid = "6B4E99F2-3F55-40C3-8B4A-8430172F90A3";
            //***************************
            //下边的就是一些项目的操作已经删除了
        }
    }
    //qq登陆请求的接口//这个直接请求就可以了
    public function qqReq() {
        session_start();
        require_once './libraries/qqConnectAPI.php';
        $qc = new QC();
        $qc->qq_login();
    }

微博:微博也有demo,复制到项目中路径不出错就可以了,下边的就是微博的demo了

//微博登录callback
    public function weibocallback(){
        $code = $this->input->get("code",TRUE);
        echo $code;
//        $posturl = 'https://api.weibo.com/oauth2/access_token';
        include_once( './libraries/saetv2.ex.class.php' );
        $param["code"] = $code;
        $param["redirect_uri"] = $this->WB_CALLBACK_URL;
        $o = new SaeTOAuthV2($this->WB_AKEY , $this->WB_SKEY );
        $res = $o->getAccessToken('code',$param);
        print_r($res);
        if(isset($res['access_token']) && !empty($res['access_token'])){
            
            $accesstoken = $res['access_token'];                               
            $openid = $res['uid'];
            //跟上边一样删除了
        }
        
        
    }
    //微博请求的接口//这个可以放在《a href=""》里边
    public function weiboReq(){
        include_once( './libraries/saetv2.ex.class.php' );
        $o = new SaeTOAuthV2($this->WB_AKEY , $this->WB_SKEY );
        $code_url = $o->getAuthorizeURL($this->WB_CALLBACK_URL );
        echo $code_url;
    }

  

原文地址:https://www.cnblogs.com/aoxueshou/p/6955678.html