美文网首页PHP程序员
PHP实现vivo小游戏授权登录

PHP实现vivo小游戏授权登录

作者: php转go | 来源:发表于2020-10-30 15:09 被阅读0次

PHP实现vivo小游戏授权登录

  private $app_id='小游戏的AppId';
  private $app_secret='小游戏的AppSecret';
 #通过code获取access_token
  public function get_access_token($code){
      $param['timestamp'] = floor(microtime(true)*1000);//毫秒
      $param['nonce'] = md5(uniqid());
      $param['client_id'] = $this->app_id;
      $param['code'] = $code;
      $param['grant_type'] = 'authorization_code';
      $signStr = $this->getSign($param);
      $sign = md5($signStr.$this->app_secret);
      $url = "https://passport.vivo.com.cn/oauth/2.0/access_token?$signStr&sign=$sign";
      //CURL也好,file_get_contents也好,能访问到就行
      $contents=file_get_contents($url);
      return json_decode($contents,true);
  }
 #获取排序加密前的字符串
  public function getSign($param){
      ksort($param);
      $hash_data ='';
      foreach($param as $k=>$v){
          if($hash_data != ''){ $hash_data .= '&'; }
          $hash_data .= $k.'='.urlencode($v);
      }
      return $hash_data;
  }
  public function get_user_info($access_token){
      $param['client_id'] = $this->app_id;
      $param['access_token'] = $access_token;
      $param['nonce'] = md5(uniqid());
      $param['timestamp'] =  floor(microtime(true)*1000);//毫秒
      $signStr = $this->getSign($param);
      $sign = md5($signStr.$this->app_secret);
      $param['sign']=$sign;
      $url = "https://passport.vivo.com.cn/oauth/2.0/resource?$signStr&sign=$sign";
      $contents=file_get_contents($url);
      return json_decode($contents,true);
  }
  public function index(){
      $code=input('code');
      #通过code获取access_token
      $response= $this->get_access_token($code);
      if (empty($response['state']) || $response['state']!=200) {
          return error(300, '状态码:'.$response['state']);
      }
      #通过access_token获取用户信息
      $info=$this->get_user_info($response['access_token']);
      if (empty($info['state']) || $info['state']!=200) {
          return error(301, '状态码:'.$info['state']);
      }
      $openid     = $info['openid'];#openid
      $avatar     = $info['avatar'];#头像链接
      $nickname   = $info['nickname'];#vivo账号的昵称
      #todo 继续其他业务
  }

相关文章

网友评论

    本文标题:PHP实现vivo小游戏授权登录

    本文链接:https://www.haomeiwen.com/subject/rhddvktx.html