Pergunta

Alright, I'm trying to set my application up with with the Google Drive SDK. I am using it as a service account, so the set up is a little different. This is how I am doing things:

including required files:

require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/auth/Google_AssertionCredentials.php';
require_once "google-api-php-client/src/contrib/Google_Oauth2Service.php";

define constants:

DEFINE("TRUE_PATH",$_SERVER["DOCUMENT_ROOT"].'path/to/file');
DEFINE("SERVICE_ACCOUNT_EMAIL","somecode@developer.gserviceaccount.com");
DEFINE("DRIVE_SCOPE","https://www.googleapis.com/auth/drive");

the function:

function generateAssertion() {

    $assertionCredentials = new Google_AssertionCredentials();

    $assertionCredentials->serviceAccountName='somecode@developer.gserviceaccount.com';

    $assertionCredentials->privateKey=
    TRUE_PATH.'9e01fd1414aa082fadeec316161eb7028558fbde-privatekey.p12';

    $assertionCredentials->privateKeyPassword = 'notasecret';
    $p12cert = array();
    $file = TRUE_PATH.'9e01fd1414aa082fadeec316161eb7028558fbde-privatekey.p12';
    if (file_exists($file)) {
        try {
            $assertion = $assertionCredentials->generateAssertion();
            return $assertion;
        } catch (Exception $e) {
            d($assertionCredentials);
            return 'Caught exception: ' . $e->getMessage() . "\n";
        }
    } else {
        return "no p12 privatekey file";
    }
}

the line $assertion = $assertionCredentials->generateAssertion(); gives me a code that loooks like this:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczpcL1wvYWNjb3VudHMuZ29vZ2xlLmNvbVwvb1wvb2F1dGgyXC90b2tlbiIsInNjb3BlIjpudWxsLCJpYXQiOjEzNTMzNjk3NzUsImV4cCI6MTM1MzM3MzM3NSwiaXNzIjoiMjY5Mjg1NDU2NjY0QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIn0.KMBTsGZkhLhddBFtc0PB1qZgtdQYyirhWtYixCYx1zo5Otv9pCUBfvrCXOg3JzR-mzE6zHuCZdmGOD7w_LRwYHJpoo0rdpxDXLjtNCgFZdu1d21cVAnqTkIhMGvdS_K7JP_KioXyi-nBdvZt9IXKaApIdDKhRp-T5HByIeO2ijU

my question is, what do I do with the code/token returned from generateAssertion() so that I can access my drive account? I tried using it as an access token and a refresh token with no success.

I apologize if this is a stupid question, but I am new to the sdk Any help will be greatly appreciated.

Thank you!!!

Foi útil?

Solução

You don't need to call generateAssertion(). Rather, just give the credentials to the client instance and let it do the work of generating the assertion

$client = new Google_Client();
$client->setAssertionCredentials($assertionCredentials);

See http://code.google.com/p/google-api-php-client/wiki/OAuth2 for additional details.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top