/** * 微信公众号联合登录 * @return array|int * @throws DataNotFoundException * @throws DbException * @throws LogicException * @throws ModelNotFoundException */public function openid(): array{ $code = $this->request->param('code', ''); if (empty($code)) throw new LogicException("code必传"); $secret = Config::get('business.wechat.secret'); $appid = Config::get('business.wechat.appid'); $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret;=" . $secret . "&code;=" . $code . "&grant;_type=authorization_code"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $content = curl_exec($ch); $status = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status == 404) { return $status; } curl_close($ch); $errcode = json_decode($content, true); if (isset($errcode['errcode'])) { throw new LogicException($errcode['errmsg']); } //Log::info('errcode:' . $content); if (isset($errcode['openid']) && isset($errcode['access_token'])) { $info = $this->getUserInfo($errcode['openid'], $errcode['access_token']); //Log::info('info:' . json_encode($info, true)); $unionid = $info['unionid']; $nickname = $info['nickname']; $headimgurl = $info['headimgurl']; $clientSecret = $this->request->param('clientSecret', ''); return $this->userInfoService->login( 'mobile', $clientSecret. 'driving-test-web', 'oauth', $errcode['openid'], '', $this->request->deviceId, $this->request->deviceToken, $this->request->ip(), $errcode['openid'], $nickname, $headimgurl, $unionid ); } throw new LogicException('获取失败');}/** * 微信小程序获取openid * @return array|int * @throws DataNotFoundException * @throws DbException * @throws LogicException * @throws ModelNotFoundException */public function smallOpenid(){ $code = $this->request->param('code', ''); $nickname = $this->request->param('nickname', ''); $headimgurl = $this->request->param('headimgurl', ''); if (empty($code)) throw new LogicException("code必传"); $secret = Config::get('business.wechat.small_secret'); $appid = Config::get('business.wechat.small_appid'); $url = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appid . "&secret;=" . $secret . "&js;_code=" . $code . "&grant;_type=authorization_code"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $content = curl_exec($ch); $status = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status == 404) { return $status; } curl_close($ch); $result = json_decode($content, true); if (isset($result['errcode'])) { throw new LogicException($result['errmsg']); } //return $result['openid']; $clientSecret = $this->request->param('clientSecret', ''); return $this->userInfoService->login( 'mobile', $clientSecret. 'driving-test-wechat', 'oauth', $result['openid'], '', $this->request->deviceId, $this->request->deviceToken, $this->request->ip(), $result['openid'], $nickname, $headimgurl, $result['unionid'] );}/** * 头条获取openid * @return array|int * @throws DataNotFoundException * @throws DbException * @throws LogicException * @throws ModelNotFoundException */public function toutiaoOpenid(){ $code = $this->request->param('code', ''); $nickname = $this->request->param('nickname', ''); $headimgurl = $this->request->param('headimgurl', ''); if (empty($code)) throw new LogicException("code必传"); $secret = Config::get('business.toutiao.secret'); $appid = Config::get('business.toutiao.app_id'); $url = "https://developer.toutiao.com/api/apps/jscode2session?appid=" . $appid . "&secret;=" . $secret . "&code;=" . $code; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $content = curl_exec($ch); $status = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($status == 404) { return $status; } curl_close($ch); $result = json_decode($content, true); if ($result['error'] != 0) { throw new LogicException($result['errcode'] . ':' . $result['errmsg']); } //return $result['openid']; //Log::info('字节小程序openid:' . $result['openid'].';unionid:'.$result['unionid']); $clientSecret = $this->request->param('clientSecret', ''); return $this->userInfoService->login( 'mobile', $clientSecret. 'driving-test-tiktok', 'oauth', $result['openid'], '', $this->request->deviceId, $this->request->deviceToken, $this->request->ip(), $result['openid'], $nickname, $headimgurl, $result['unionid'] );}/** * 获取用户信息 * @param string $openid 调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid * @return string */public function getUserInfo($openid, $access_token){ $response = self::curlGet('https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid;=' . $openid . '〈=zh_CN'); return json_decode($response, true);}public static function curlGet($url = '', $options = array()){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); if (!empty($options)) { curl_setopt_array($ch, $options); } //https请求 不验证证书和host curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); curl_close($ch); return $data;}
以上就是抖音 微信小程序登录的全部内容,希望能够对大家有所帮助。