Google服务驱动器无效

时间:2016-04-28 08:03:39

标签: laravel-5.2 google-api-client drive

我正在使用与 Laravel5.2 集成的google api客户端,我面临的问题只是将不同的文件内容列入我的云端硬盘帐户。

客户似乎没有信用卡和访问服务,因为谷歌在使用情况监控上显示请求确定但我仍然没有得到任何关于我使用的代码:

中间件:

public function handle($request, Closure $next)
{
    $client_email = 'id@kribbean-wave.iam.gserviceaccount.com';
    $private_key = file_get_contents(base_path().'/resources/assets/kribbean-wave.p12');

    $scopes = array('https://www.googleapis.com/auth/drive');

    $credentials = new \Google_Auth_AssertionCredentials(
        $client_email,
        $scopes,
        $private_key
    );

    $client = new \Google_Client();
    $client->setAssertionCredentials($credentials);
    $client->setAccessType('offline');

    if ($client->getAuth()->isAccessTokenExpired()){

        $client->getAuth()->refreshTokenWithAssertion();
        $request->request->set('client',$client);
    }

    return $next($request);
}

控制器:

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('Google');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $client = $request->request->get('client');

        $service = new \Google_Service_Drive($client);
        $result = $service->files->listFiles();
        $list = $result->getItems();
        dd(json_encode($list));
        return view('index')->with('result',$list);
    }
}

中间件按预期工作,但dd(json_encode($list));为空。

你能帮帮忙吗?

1 个答案:

答案 0 :(得分:0)

要允许服务帐户访问我自己的Google云端硬盘中的文件,我必须授予服务帐户电子邮件地址的权限。正确设置权限后,列表将填充允许服务帐户访问的文件。