当前实现了一个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);
}
}
}
答案 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
对象,所以问题就出在那儿。