Ben Southall
Ben Southall

Reputation: 687

Google API error - Could not determine client ID from request

i'm using google-api-php-client to request an access token from the client 0auth flow, but it returns the error "Could not determine client ID from request".

My code is below.

My client_secret.json:

    "web": {
        "client_id":"123",
        "project_id":"1234",
        "auth_uri":"https://accounts.google.com/o/oauth2/auth",
        "token_uri":"https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
        "client_secret":"123456789",
        "redirect_uris":[
            "http://localhost:7777/v1/oauth2callback"
        ],
        "javascript_origins":[
            "http://localhost:7777"
        ]
    }
}

My auth URL creation:

    $client->setAuthConfig(base_path() . '/client_secret.json');
    $client->addScope(\Google_Service_Calendar::CALENDAR);
    $client->setRedirectUri(URL::to('/') . '/v1/oauth2callback');
    $client->setAccessType('offline');
    $client->setPrompt('consent');
    $client->setIncludeGrantedScopes(true);

    $url = $client->createAuthUrl();
    print filter_var($url, FILTER_SANITIZE_URL);

I'm then manually going to the URL:

https://accounts.google.com/o/oauth2/auth?response_type=code&access_type=offline&client_id=123-blah&redirect_uri=http%3A%2F%2Flocalhost%3A7777%2Fv1%2Foauth2callback&state&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar&include_granted_scopes=true&prompt=consent

The auth flow all seems to work and returns me back to my url where I try to decode the token:

    $code = $request->code;
    $client = new Google\Client();
    $accessToken = $client->fetchAccessTokenWithAuthCode($code);
    var_dump($accessToken);
    exit;

Which gives me this error:

array(2) { ["error"]=> string(15) "invalid_request" ["error_description"]=> string(43) "Could not determine client ID from request." }

Upvotes: 5

Views: 8630

Answers (2)

user19677920
user19677920

Reputation: 1

Please check the "Application" type when creating the Oauth Client. In this case you might want to select application type as "Desktop". It worked for me.

Upvotes: 0

Ben Southall
Ben Southall

Reputation: 687

Found the issue. In case anyone else runs into this problem it was simply because I hadn't loaded the auth configs before trying to fetch the access token.

e.g. Add this line before calling fetchAccessTokenWithAuthCode(). $client->setAuthConfig(base_path() . '/client_secret.json');

The error was throwing me off and I assumed it was an issue with retrieving the auth token.

Upvotes: 12

Related Questions