无法获得用户信息?

在tinker调试可以成功获得微信账户的信息。
但是写成接口在postman测试就不能成功!总是显示401。
code是从微信工具获得的,使用的code也是之前没有使用过的

CaiBird008
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 19
CaiBird008
5年前 评论
liyu001989

那你先确认一下参数到底传对了没,加日志调试一下

5年前 评论
CaiBird008

@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可以成功获取到用户信息的啊

5年前 评论
CaiBird008

@liyu001989 还有我想问一下。教程里的User.php路径是App\Models\,我的User.php是在App根目录下。 应该没差别吧?

5年前 评论
liyu001989

你的目的是学会代码为什么要这么写,报错了加日志调试,看源码都能进步。你也没贴你的代码,也没贴报错截图,没有任何有用的信息,总是在强调401,我们该怎么帮助你?

  1. 确定请求的参数是否真的传到controller 里面了
  2. 确定具体是哪一行代码报的错,把 try catch 打开,去报错的地方日志
  3. 下载项目的源码,配置,运行,对比一下为什么源码可以,你的代码不行。
5年前 评论
CaiBird008

"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过来还是不行。

5年前 评论
CaiBird008

@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}

"}

这个最近的日志

5年前 评论
CaiBird008

@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]);
}
5年前 评论
liyu001989

报错提示的异常的清楚。。。。

file

所以你的第17行到底写个啥

5年前 评论
CaiBird008

@liyu001989 这也正是我疑惑的地方。 第十七行是我发上去彩色的第一行代码。
也就是: $driver = \Socialite::driver($type); 这一句

5年前 评论
liyu001989

那你下载项目源码对比吧,我尽力了

5年前 评论
CaiBird008

@liyu001989 和源码一样呀。 真是吐血

5年前 评论

@CaiBird008 兄弟,我建议你从头再把教程看一遍,

5年前 评论

code过期了吧。

5年前 评论

哥们 ~~ 你的问题 解决了没啊

5年前 评论
CaiBird008

@daxiaobuzhaodiao 没呢哥们。使用easywechat好了

5年前 评论
TigerLin

看的我也醉了 怪不得summer哥要对提问考核

5年前 评论

我也遇到了,代码检查了N遍,确认无误.教程重复了3遍,问题照样出现.想发帖求助,但看已经有人'醉'了,就可耻地隐了.

3年前 评论

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