Undefined index: openid,无法通过 $driver->getAccessTokenResponse ($code) 获取到返回值?

按照教程,通过 2). 客户端只获取授权码(code)这种方式去做

配置好了config/service.php 里的wechat节点;
通过微信授权链接提取到code填入下方CODE

通过以下代码,

$code = 'CODE';
$driver = Socialite::driver('weixin');
$response = $driver->getAccessTokenResponse($code);
$driver->setOpenId($response['openid']);
$oauthUser = $driver->userFromToken($response['access_token']);

报错:

Undefined index: openid

in Provider.php (line 132)
at HandleExceptions->handleError(8, 'Undefined index: openid',  132, array('code' => '0711ZXnX1Dqy4T0Z9RoX1bi8oX11ZXn4', 'response' => object(Response)))
in Provider.php (line 132)
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 17

@orange 你退出tinker,再重新进去就好了

6年前 评论
liyu001989

注意 code 只能尝试一次,测试过一次以后就需要重新获取。因为code失效或者错误,Socialite没有获取到信息所以报错了

6年前 评论

@liyu001989 我是用了一次的 都是重新申请的code

6年前 评论
liyu001989

https://learnku.com/courses/laravel-advanc...
这一节你能测试通过?但是在tinker中测试不通过?

确认一下 env 中的 WEIXIN_KEY 和 WEIXIN_SECRET 填写正确了没

6年前 评论

@orange 你退出tinker,再重新进去就好了

6年前 评论

.env里面没有配置好WEIXIN_KEY / WEIXIN_SECRET 的话也会有这个报错

5年前 评论

因为更改了 .env 配置和 ServiceProvider 的代码,所以需要重启 tinker~

5年前 评论
Cwift

@zssen 正解,退出再进

5年前 评论
xin6841414

同样踩坑, 退出tinker重进就好了, 建议作者写进去, 没有这个问题,还真不知道怎么解决,把配置挨个对,也不行 :joy:@liyu001989

5年前 评论

更改了 .env 配置,需要重启 tinker
建议作者写进教程

5年前 评论

Tinker是常驻内存的,这是个常识啊

5年前 评论

来报到。也遇到这个问题了。ctrl+z 退出tinker, 再进入。就好了! 谢谢楼上学长的解答!

4年前 评论

在确保WEIXIN_KEY和WEXIN_SECRET正确前提下,若重新退出tinker后也如此,可以尝试清除laravel的cache再尝试:

php artisan cache:clear

php artisan config:cache

4年前 评论

退出tinker,再重新进 ——正解+1

3年前 评论

code失效,或者你的code出错了,复制时把state参数带进去了

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!