@liyu001989 我是先自己照着代码打的,然后一直401,后来直接复制教程里的代码了也是401。 appid和secret我检查过了没问题,code每次我都是用微信工具生成再填进去的。 而在EventServiceProvider里面\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// add your listeners (aka providers) here
'SocialiteProviders\Weixin\WeixinExtendSocialite@handle'
],
\SocialiteProviders\Manager\SocialiteWasCalled低下显示灰色波浪线。
在控制器里有getAccessTokenResponse等函数显示高亮。这是不是环境问题? 但是这tinker可以成功获取到用户信息的啊
你的目的是学会代码为什么要这么写,报错了加日志调试,看源码都能进步。你也没贴你的代码,也没贴报错截图,没有任何有用的信息,总是在强调401,我们该怎么帮助你?
- 确定请求的参数是否真的传到controller 里面了
- 确定具体是哪一行代码报的错,把 try catch 打开,去报错的地方日志
- 下载项目的源码,配置,运行,对比一下为什么源码可以,你的代码不行。
"message": "参数错误,未获取用户信息",
"status_code": 401,
"debug": {
"line": 173,
"file": "/home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Response/Factory.php",
"class": "Symfony\Component\HttpKernel\Exception\HttpException",
"trace": [
postman是这样的。 下载了项目代码,然后copy过来还是不行。
@liyu001989 [2018-09-20 14:20:01] local.ERROR: Class 'Laravel\Socialite\Socialite' not found {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Class 'Laravel\Socialite\Socialite' not found at /home/vagrant/Code/LaraBBS/app/Http/Controllers/Api/AuthorizationsController.php:17)
[stacktrace]
0 [internal function]: App\Http\Controllers\Api\AuthorizationsController->socialStore('weixin', Object(App\Http\Requests\Api\SocialAuthorizationRequest))
1 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
2 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('socialStore', Array)
3 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Api\AuthorizationsController), 'socialStore')
4 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\Routing\Route->runController()
5 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Route->run()
6 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
7 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Middleware/RateLimit.php(70): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
8 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Dingo\Api\Http\Middleware\RateLimit->handle(Object(Dingo\Api\Http\Request), Object(Closure))
9 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
10 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Middleware/PrepareController.php(45): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
11 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Dingo\Api\Http\Middleware\PrepareController->handle(Object(Dingo\Api\Http\Request), Object(Closure))
12 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
13 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\Request))
14 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\Pipeline\Pipeline->then(Object(Closure))
15 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Dingo\Api\Http\Request))
16 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\Routing\Router->runRoute(Object(Dingo\Api\Http\Request), Object(Illuminate\Routing\Route))
17 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\Routing\Router->dispatchToRoute(Object(Dingo\Api\Http\Request))
18 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Routing/Adapter/Laravel.php(81): Illuminate\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))
19 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Routing/Router.php(512): Dingo\Api\Routing\Adapter\Laravel->dispatch(Object(Dingo\Api\Http\Request), 'v1')
20 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Middleware/Request.php(126): Dingo\Api\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))
21 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(114): Dingo\Api\Http\Middleware\Request->Dingo\Api\Http\Middleware\{closure}(Object(Dingo\Api\Http\Request))
22 /home/vagrant/Code/LaraBBS/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
23 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fideloper\Proxy\TrustProxies->handle(Object(Dingo\Api\Http\Request), Object(Closure))
24 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
25 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
26 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
27 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))
28 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
29 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Dingo\Api\Http\Request), Object(Closure))
30 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
31 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Dingo\Api\Http\Request), Object(Closure))
32 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))
33 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Middleware/Request.php(127): Illuminate\Pipeline\Pipeline->then(Object(Closure))
34 /home/vagrant/Code/LaraBBS/vendor/dingo/api/src/Http/Middleware/Request.php(103): Dingo\Api\Http\Middleware\Request->sendRequestThroughRouter(Object(Dingo\Api\Http\Request))
35 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Dingo\Api\Http\Middleware\Request->handle(Object(Dingo\Api\Http\Request), Object(Closure))
36 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
37 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
38 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
39 /home/vagrant/Code/LaraBBS/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
40 /home/vagrant/Code/LaraBBS/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
41 {main}
"}
这个最近的日志
@liyu001989 这是代码。和教程的一模一样 谢谢了,辛苦
public function socialStore($type, SocialAuthorizationRequest $request)
{
if (!in_array($type, ['weixin'])) {
return $this->response->errorBadRequest();
}
$driver = \Socialite::driver($type);
try {
if ($code = $request->code) {
$response = $driver->getAccessTokenResponse($code);
$token = array_get($response, 'access_token');
} else {
$token = $request->access_token;
if ($type == 'weixin') {
$driver->setOpenId($request->openid);
}
}
$oauthUser = $driver->userFromToken($token);
} catch (\Exception $e) {
return $this->response->errorUnauthorized('参数错误,未获取用户信息');
}
switch ($type) {
case 'weixin':
$unionid = $oauthUser->offsetExists('unionid') ? $oauthUser->offsetGet('unionid') : null;
if ($unionid) {
$user = User::where('weixin_unionid', $unionid)->first();
} else {
$user = User::where('weixin_openid', $oauthUser->getId())->first();
}
// 没有用户,默认创建一个用户
if (!$user) {
$user = User::create([
'name' => $oauthUser->getNickname(),
'avatar' => $oauthUser->getAvatar(),
'weixin_openid' => $oauthUser->getId(),
'weixin_unionid' => $unionid,
]);
}
break;
}
return $this->response->array(['token' => $user->id]);
}
推荐文章: