微信小程序登陆流程laravel

登陆流程

1、【小程序】调用wx.login() 获取 code给服务器 

2、【服务器】用code换 openid 和session_key,随机生成trd_session保存【trd_session=>"openid,session

_key"】到cache,返回trd_session

3、【小程序】把trd_session保存到storage

小程序端

// 登录

wx.login({ success: res => {

// 发送 res.code 到后台换取 openId, sessionKey, unionId

wx.request({

url: '【url】',

data:{code:res.code},

success: res => { wx.setStorage({ key: "trd_session", data: res.data }) } }) } })

服务器端


composer require guzzlehttp/guzzle

composer require predis/predis

composer require illuminate/redis

去除

$app->withFacades();$app->withEloquent();

注册

$app->register(Illuminate\Redis\RedisServiceProvider::class);

.env中

CACHE_DRIVER=redis



use Illuminate\Http\Request;

$router->get('/code', function (Request $request) {

// 获取open_id session_key

$appid = env('APP_ID');

$secret = env('APP_SECRET');

$js_code = $request->input('code');

$url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$js_code&grant_type=authorization_code";

$client = new \GuzzleHttp\Client();

$response = $client->get($url);

$res = json_decode($response->getBody()); /

/生成trd_session 保存到cache

$expires_in = $res->expires_in;

$session_key = $res->session_key;

$openid = $res->openid;

$trd_session = md5($session_key);

Cache::put($trd_session, "$openid,$session_key" , $expires_in);

return $trd_session;

});

你可能感兴趣的:(微信小程序登陆流程laravel)