在laravel包中获取错误无效的json令牌

时间:2018-08-21 10:22:55

标签: laravel laravel-5 google-api-client

当前实现了一个Google驱动器API。在laravel软件包中获取错误无效的json令牌。我想在Google驱动器中创建文件夹后上传文件。创建的应用程序可以正常工作,但重定向后什么也没有发生。如果有人可以帮助。

**教程链接**:https://www.sitepoint.com/is-laravel-good-enough-to-power-a-custom-google-drive-ui/

可能不推荐使用

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Googl;

class HomeController extends Controller
{
    public function index()
    {

        return view('login');
    }


    public function login(Googl $googl, Request $request)
    {
        $client = $googl->client();

        if ($request->has('code')) {            
            $client->authenticate($request->input('code'));
            $token = $client->getAccessToken();

            $plus = new \Google_Service_Plus($client);

            $google_user = $plus->people->get('me');
            $id = $google_user['id'];

            $email = $google_user['emails'][0]['value'];
            $first_name = $google_user['name']['givenName'];
            $last_name = $google_user['name']['familyName'];

            session([
                'user' => [
                    'email' => $email,
                    'first_name' => $first_name,
                    'last_name' => $last_name,
                    'token' => $token
                ]
            ]);


            return redirect('/dashboard')->with('message', ['type' => 'success', 'text' => 'You are now logged in.']);

        } else {
            $auth_url = $client->createAuthUrl();
            return redirect($auth_url);
        }
   }
}

堆栈跟踪: enter image description here

2 个答案:

答案 0 :(得分:0)

首次检查:

从您链接到的教程(没有看到它,我假设这就是您所拥有的)中,看起来AdminController构造函数正在尝试从user.token会话变量中检索令牌。值得在使用前检查它是否确实包含令牌。

可以尝试的方法:

回顾我几个月前的实现,看来我在努力地从Google客户端中检索正确的令牌字符串。代替:

if ($request->has('code')) {            
    ...
    $token = $client->getAccessToken();
    ...

尝试类似的东西:

if ($request->has('code')) {   
    $fullToken = $client->fetchAccessTokenWithAuthCode($code);
    $client->setAccessToken($fullToken);   

答案 1 :(得分:0)

这应该是评论,但看来我还不能...

从您的屏幕截图中,我可以看到问题出在第16行上的 AdminController.php 中。能否请您共享此代码。 setAccessToken()正在接收null对象,所以问题就出在那儿。