tp5的微博第三方登录

1.先去微博开放平台申请网站接入 (http://open.weibo.com/connect

     1.申请应用后,会提供App Key与App Secret在审核通过前可以用这个做测试;

     2.在应用信息->高级信息 里填写登录后的返回地址

2.下载SDK  (http://open.weibo.com/wiki/SDK#PHP_SDK

     1.在Config里填写上得到的数据

            class Config
                         {
                                 public $akey = '344xxxxxxx';

                                 public $WB_SKEY = 'd6677ae0d90780ed064349086xxxxxxx';
                                 public $WB_CALLBACK_URL = 'http://www.baidu.com';
                          }

     2.我是把这几个配置文件放置在了Model里,例如:SaeTClientV2.php,                                  SaeTOAuthV2.php,Config.php这几个配置文件

           {以下是我的方法,看明白了再用哈}

                  

/***
 * 第三方授权,获取到code
 * @param Request $request
 */
public function callback(Request $request)
{
    $zhi = new Config();
    $AppKey = $zhi->akey;
    $Appserver = $zhi->WB_SKEY;
    $WB_CALLBACK_URL = $zhi->WB_CALLBACK_URL;
    $o = new SaeTOAuthV2( $AppKey , $Appserver );

    if (isset($_REQUEST['code'])) {
        $keys = array();
        $keys['code'] = $_REQUEST['code'];
        $keys['redirect_uri'] = $WB_CALLBACK_URL;
        try {
            $token = $o->getAccessToken( 'code', $keys ) ;
        } catch (OAuthException $e) {
        }
    }
    if ($token) {
        session("token",$token);
        setcookie('weibojs_' . $o->client_id, http_build_query($token));
            return $this->redirect("index/disanfangdengl");
    }else{
        echo "授权失败,请重试";
    }
}
/***
 * 获取当前用户信息,将数据写入数据库完成第三方登录
 * @param Request $request
 */
public function disanfangdengl(Request $request)
{
    $zhi = new Config();
    $AppKey = $zhi->akey;
    $Appserver = $zhi->WB_SKEY;
    $WB_CALLBACK_URL = $zhi->WB_CALLBACK_URL;

    $c = new SaeTClientV2( $AppKey , $Appserver , session("token")['access_token'] );

    $ms  = $c->home_timeline(); // done
    $uid_get = $c->get_uid();

    if(isset($uid_get["uid"])){
        $uid = $uid_get['uid'];
        $user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
        $userinfo = Db::name("user")
            ->where("weibo",$user_message["id"])
            ->find();
        if($userinfo){
            $data_name = $user_message["name"];
            $data_head_portrait = $user_message["profile_image_url"];
            
            if(Db::name("user")->where("weibo",$user_message["id"])->update(["name"=>$data_name,"head_portrait"=>$data_head_portrait])){
                cookie('user',$userinfo);
                return redirect("index/index");
            }else{
                cookie('user',$userinfo);
                return redirect("index/index");
            }
        }else{
            $data["name"] = $user_message["name"];
            $data["weibo"] = $user_message["id"];
            $data["create_time"] = time();
            $data["head_portrait"] = $user_message["profile_image_url"];
            $userid = Db::name("user")->insertGetId($data);
            if($userid){
                $user = Db::name("user")->where("id",$userid)->find();
                cookie('user',$user);
                return redirect("index/index");
            }else{
                echo "登录失败,请稍后再试";
            }
        }
    }else{
        echo "发生未知错误,请稍后再试";
    }
}

嗯,以上是我自己摸索的可能写麻烦了,请大佬指点

253372540@qq.com

 

THINKPHP最全第三方登录(包括腾讯QQ、微信、新浪微博、Github、淘宝网、百度、搜狐微博、人人、360、网易等等) 使用方式: 1、使用命名空间 use Org\ThinkSDK\ThinkOauth; 2、设置三方登录的类别并赋予一个变量 $type = ThinkOauth::getInstance('qq'); 3、设置配置文件 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ), 上文中的(TYPE)为设置的类别,其值目前有以下几个: //腾讯QQ登录配置 THINK_SDK_QQ // 用户基本信息API接口 user/get_user_info //腾讯微博配置 THINK_SDK_TENCENT // 用户基本信息API接口 user/info //新浪微博配 THINK_SDK_SINA // 用户基本信息API接口 users/show。附加参数:'uid='.$obj->openid() //网易微博配置 THINK_SDK_T163 // 用户基本信息API接口 users/show //人人网配置 THINK_SDK_RENREN // 用户基本信息API接口 users.getInfo //360配置 THINK_SDK_X360 // 用户基本信息API接口 user/me //豆瓣配置 THINK_SDK_DOUBAN // 用户基本信息API接口 user/~me //Github配置 THINK_SDK_GITHUB // 用户基本信息API接口 user //Google配置 THINK_SDK_GOOGLE // 用户基本信息API接口 userinfo //MSN配置 THINK_SDK_MSN // 用户基本信息API接口 msn。附加参数:token //点点配置 THINK_SDK_DIANDIAN // 用户基本信息API接口 user/info //淘宝网配置 THINK_SDK_TAOBAO // 用户基本信息API接口 taobao.user.buyer.get。附加参数:'fields=user_id,nick,sex,buyer_credit,avatar,has_shop,vip_info' //百度配置 THINK_SDK_BAIDU // 用户基本信息API接口 passport/users/getLoggedInUser // 注意,百度的头像位置是http://tb.himg.baidu.com/sys/portrait/item/{$data['portrait']} //开心网配置 THINK_SDK_KAIXIN // 用户基本信息API接口 users/me //搜狐微博配置 THINK_SDK_SOHU // 用户基本信息API接口 i/prv/1/user/get-basic-info 4、实例化一个登录页面 redirect($type->getRequestCodeURL()); 这里的$type是第二部获取的结果 5、回调页面 $code = $this->get('code'); $type = 'QQ'; $sns = ThinkOauth::getInstance($type); //腾讯微博需传递的额外参数 $extend = null; if($type == 'tencent'){ $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey')); } //请妥善保管这里获取到的Tok
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值