qq 第三方登录代码 泪哭

以前项目曾让我加过第三方登录,为了避免麻烦,这次就把主要的步骤给补上,在这里我用的是官网的oauth2.0,但是刚才我看了一下互联,官网上昨天说貌似使用url拼的路径将要停用,但还是发表一下把,我是按照官网的步骤来的,首先你要在一个页面中放一个第三方登录扣扣按钮,然后,给它一个超链接,连接到下面的网址:


https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=你的id&redirect_uri=http://回调域com/index/qq_login&state=xiaoqing(随便写)

下一步,根据你的回调域,找到相对应的控制器与方法,在方法里面接收,在这里我的方法是qq_login,所以,

   public function qq_login()
    {
        
        $access_token = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=00000&client_secret=7e65c2c83b4cdd2ee65b4119c3fb0b6f&   code='.$_GET['code'].'&redirect_uri=http://回调域com/index/qq_login';
        $access_token_content = file_get_contents($access_token);
        $params = $this->access_token($access_token_content);
        
        $user_id = 'https://graph.qq.com/oauth2.0/me?access_token='.$params['access_token'];
        $data = file_get_contents($user_id);
        $data = str_replace('callback(','', $data);
        $data = str_replace(');','', $data);
        $open_id = json_decode($data,true);
        $openid=$open_id['openid'];
        Session::put('openid',$openid);
        $user_url = 'https://graph.qq.com/user/get_user_info?access_token='.$params['access_token'].'&oauth_consumer_key=000000&openid='.$openid;
        $user_message = json_decode(file_get_contents($user_url), true);
        
        //查询该用户是否绑定手机号或邮箱
        //print_r(strlen($openid));die;
          $res = DB::table('users_oauth')->where('open_id','=',$openid)->first();
          
          if($res)
          {
            $data = User::where('id',$res->user_id)->first()->toArray();
            \Session::put('user',$data);
            //之前使用扣扣登陆过
            return redirect()->action('IndexController@index');
           }else{
            return redirect()->action('LoginController@user_bind', ['status' => 0, 'nickname' => $user_message['nickname']]);
          }              
        
    }

      //获取扣扣用户access_token
    public function access_token($access_token_content)
    {
        $queryParts = explode('&', $access_token_content);
        $params = array();
        foreach ($queryParts as $param) {
          $item = explode('=', $param);
          $params[$item[0]] = $item[1];
        }  
        return $params;
    }
以上是我直接从项目中粘贴过来的代码,使用的是laravel5.2第三方登陆代码,可以借鉴,看到这里,关于第三方登陆的一些需要处理的json数据已经处理完善,但是,也是最最让我郁闷的一件事还是发生了,请看 哭





结束语》》   凤求凰亦或是凤囚凰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值