- 微信小程序授权登录
wxml: <view> <image src="{{userInfo.img}}" class="img"></image> </view> <view class="name"> {{userInfo.nickname}} </view> <view wx:if="{{userInfo.sex==0}}" class="sex">男</view> <view wx:else="{{userInfo.sex==1}}" class="sex"></view> <button open-type="getUserInfo" bindtap="login" type="default">登录</button> js: login(e){ var that = this wx.getUserProfile({ desc: 'desc', success:res=>{ console.log(res) var userInfo = res.userInfo wx.login({ success (res) { console.log(res) if (res.code) { //发起网络请求 wx.request({ url: 'http://www.exam2.com/api/login', data: { code: res.code, userInfo:userInfo }, method:"POST", header: { 'content-type': 'application/json' // 默认值 }, success (res) { console.log(res.data) if(res.data.code==203){ wx.showToast({ title: res.data.msg, icon:"error" }) return; } if(res.data.code==200){ wx.setStorageSync('openid',res.data.data.openid) wx.setStorageSync('session_key',res.data.data.session_key) that.setData({ userInfo:res.data.data }) wx.showToast({ title: res.data.msg, }) wx.navigateTo({ url: '/pages/phone/phone', }) } } }) } else { console.log('登录失败!' + res.errMsg) } } }) } }) }, php: <?php namespace App\Http\Controllers; use App\Jwt\Token; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { // /** * 登录 */ public function loginDo(request $request) { $code = $request->post('code'); $openid = config('openid.openid'); $session_key = config('openid.session_key'); $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$openid}&secret={$session_key}&js_code={$code}&grant_type=authorization_code"; $res = $this->geturl($url); //return ['code'=>200,'msg'=>'成功','data'=>$res]; $arr = [ 'openid'=>$res['openid'], 'session_key'=>$res['session_key'] ]; $data = User::where('openid',$res['openid'])->first(); if (empty($data)){ $add = User::create($arr,true); if ($add){ $token = (new Token())->createToken($res['openid']); return ['code'=>200,'msg'=>'登录成功','data'=>$token]; } }else{ $up = User::where('openid',$res['openid'])->update(['session_key'=>$res['session_key']]); if ($up){ $token = (new Token())->createToken($res['openid']); return ['code'=>200,'msg'=>'登录成功','data'=>$token]; } } } function geturl($url){ $headerArray =array("Content-type:application/json;","Accept:application/json"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray); $output = curl_exec($ch); curl_close($ch); $output = json_decode($output,true); return $output; } }
2022-03-15 - 如何通过PHP调用云开发的HTTP API触发云函数?
官方的文档是用post请求然后传4个参数,但是那个POSTBODY到底是传什么,官方文档也没说明,我没传POSTBODY报的-501007错误; 请问各位有没有通过php调用http api的案例借我参考一下; [代码]//获取接口凭证access_token[代码][代码]$url[代码] [代码]= [代码][代码]"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}"[代码][代码];[代码][代码]$json_str[代码] [代码]= [代码][代码]file_get_contents[代码][代码]([代码][代码]$url[代码][代码]);[代码][代码]$aTest[代码] [代码]= json_decode([代码][代码]$json_str[代码][代码], true);[代码] [代码]print_format_r([代码][代码]$aTest[代码][代码]);[代码] [代码]//http api 触发云函数[代码][代码]$access_token[代码] [代码]= [代码][代码]$aTest[代码][代码][[代码][代码]'access_token'[代码][代码]];[代码][代码]$env[代码] [代码]= [代码][代码]'qr-cs8dp'[代码][代码];[代码][代码]$name[代码] [代码]= [代码][代码]'test'[代码][代码];[代码] [代码]$curl[代码] [代码]= curl_init();[代码][代码]// 使用curl_setopt()设置要获取的URL地址[代码][代码]$url2[代码] [代码]= [代码][代码]"https://api.weixin.qq.com/tcb/invokecloudfunction?access_token={$access_token}&env={$env}&name={$name}"[代码][代码];[代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_URL, [代码][代码]$url2[代码][代码]);[代码][代码]// 设置是否输出header[代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_HEADER, false);[代码][代码]// 设置是否输出结果[代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_RETURNTRANSFER, 1);[代码][代码]// 设置是否检查服务器端的证书[代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_SSL_VERIFYPEER, false);[代码][代码]// 使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量[代码][代码]$data[代码] [代码]= curl_exec([代码][代码]$curl[代码][代码]);[代码][代码]// 使用 curl_close() 关闭CURL会话[代码][代码]curl_close([代码][代码]$curl[代码][代码]);[代码] [代码]$data[代码] [代码]= json_decode([代码][代码]$data[代码][代码]);[代码][代码]$data[代码] [代码]= get_object_vars([代码][代码]$data[代码][代码]);[代码] [代码]print_format_r([代码][代码]$data[代码][代码]);[代码]
2019-08-07