Anfragen an Google API mit Guzzle und Socialite in Laravel 5 @ stell

Ich erstelle eine Web-App, die mit der Google Kontakte-API interagieren und die Kontaktliste des authentifizierten Benutzers abrufen muss, erhalte aber

ClientException in RequestException.php line 89:
Client error response [url] https://www.google.com/m8/feeds/contacts/[email protected]/full?prettyPrint=false [status code] 403 [reason phrase] Forbidden

Hier ist meine AuthenticateUser.php, in die ich die Funktion getContactList aufgenommen habe. Ich versuche, die Guzzle-Anforderung an den Google-Server zu senden, und habe es geschafft, das richtige Zugriffstoken zu senden, indem ich es in einer Sitzungsvariablen speichere Verbotene Antwort:

<?php
namespace App;
use Laravel\Socialite\Contracts\Factory as Socialite;
use App\Repositories\UserRepository;
use Illuminate\Contracts\Auth\Guard;


class AuthenticateUser {

    /**
     * @var UserRepository
     */
    private $users;
    /**
     * @var Socialite
     */
    private $socialite;
    /**
     * @var Guard
     */
    private $guard;

    private $token;

    public function __construct(UserRepository $users, Socialite $socialite, Guard $guard)
    {

        $this->users = $users;
        $this->socialite = $socialite;
        $this->guard = $guard;
    }


    /**
     * @param $hasCode
     * @param AuthenticateUserListener $listener
     * @return mixed
     */
    public function execute($hasCode, AuthenticateUserListener $listener)
    {

        if ( ! $hasCode ) return $this->getAuthorizationFirst();

        $var = $this->getGoogleUser();

        $user = $this->users->findByUsernameOrCreate($var);

        \Session::put('token', $var->token );

        \Auth::login($user, true);

        return $listener->userHasLoggedIn($user);

    }

    public function logout()
    {

        \Auth::logout();

        return redirect('/');


    }

    private function getAuthorizationFirst()
    {

        return \Socialize::with('google')->redirect();

    }

    private function getGoogleUser()
    {

        return \Socialize::with('google')->user();
    }

    public function getContactList()
    {

        $client = new \GuzzleHttp\Client();

        $email = \Auth::user()->email;

        $token = \Session::get('token');

        $json = $client->get('https://www.google.com/m8/feeds/contacts/'. $email . '/full', [
            'query' => [
                'prettyPrint' => 'false',
            ],
            'headers' => [
                'Accept' => 'application/json',
                'Authorization' => 'Bearer ' . $token ,
            ],
        ]);

        dd($json);

        return $json;

    }
}

Hier ist mein AuthController.php

<?php namespace App\Http\Controllers;

use App\AuthenticateUser;
use App\AuthenticateUserListener;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Two\GoogleProvider as Google;

use Illuminate\Http\Request;

class AuthController extends Controller implements AuthenticateUserListener
{

    public function login(AuthenticateUser $authenticateUser, Request $request){

       return $authenticateUser->execute($request->has('code'), $this);
    }

    public function userHasLoggedIn($user)
    {

        return redirect('/');
    }

    public function logout(AuthenticateUser $authenticateUser){


        return $authenticateUser->logout();

    }

    public function getContactList(AuthenticateUser $authenticateUser)
    {
        $response = $authenticateUser->getContactList();

        dd($response);
    }
}

Hier ist mein MainController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class MainController extends Controller {


    public function index()
    {
        if (\Auth::check()) return redirect('google_welcome');
        return redirect('google_login');
    }

    public function first()
    {
        return view('google_login');
    }

    public function back()
    {
        $user = \Auth::user();
        return view('google_welcomeback')->with('user', $user);
    }

}

Ich bin ziemlich neu im PHP- und Laravel-Universum. Was ist mit dem Versuch, sofort Google-APIs und -Pakete wie Socialite zu verwenden, die oAuth 2 verwenden? Ich habe wirklich Mühe gehabt, das Beste aus meinem begrenzten Wissen herauszuholen, und habe es nicht wirklich getan Ich habe online viel Dokumentation gefunden und das Problem ist, dass mein Arbeitgeber angedeutet hat, dass ich dies entweder so schnell wie möglich erledigen muss oder er wird mir den Ausweg zeigen ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage