Токен доступа Google пуст

1

Я пробовал в кодеигниторе.

Ниже я помещаю этот код в конструкцию

$this->google = new Google_Client();
$this->google->setClientId(GOOGLEID);
$this->google->setClientSecret(GOOGLESECRET);
$this->google->setDeveloperKey(GOOGLEAPIKEY);

$objOAuthService = new Google_Service_Oauth2($this->google);

то в методе1 я помещаю ниже

$this->google->setRedirectUri(site_url('auth/google-login?'));
$this->google->addScope("email");
$this->google->addScope("profile");
$data['content_data']['google_login_url'] = $this->google->createAuthUrl();
$this->load->view("test", $data);

то в методе2 я помещаю ниже

if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getRefreshToken();
    echo $token;
}

Вы можете увидеть, что я попытался напечатать $ token, но он пуст. Мой вопрос - почему он пуст?

РЕДАКТИРОВАТЬ:

echo $this->google->getAccessToken();

Даже getAccessToken возвращается пустым.

  • 0
    используйте refresh_token вместо getRefreshToken
  • 0
    Какой параметр должен быть передан для refresh_token?
Показать ещё 2 комментария
Теги:
codeigniter
google-api

2 ответа

0

Я только что исправил это.

Мое решение состоит в том, что в конструкции у меня есть

$this->google = new Google_Client();
$this->google->setClientId(GOOGLEID);
$this->google->setClientSecret(GOOGLESECRET);
$this->google->setDeveloperKey(GOOGLEAPIKEY);

$this->google->setRedirectUri(site_url('auth/google-login?'));
$this->google->addScope("email");
$this->google->addScope("profile");

в методе1 у меня есть только это

$data['content_data']['google_login_url'] = $this->google->createAuthUrl();
$this->load->view("test", $data);

и в методе2 у меня это

if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getAccessToken();
    var_dump($token);
}

и здесь $ token уже имеет значение

0

Вот рабочий код, который я использую в Laravel и Codeigniter.

// Initial config
$client = new Google_Client();
$client->setApplicationName(APP_NAME);
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setRedirectUri(REDIRECT_URI);
$client->setScopes(array(SCOPE_A));

// To retrieve refresh token forcefully
// This will ask for permission everytime.
$client->setApprovalPrompt('force');
$client->setAccessType('offline');


// Return url data part
if (isset($_GET['code'])) {

    // Log the user in
    $client->authenticate($_GET['code']);

    // Get acess token and refresh token
    $getAccesToken = $client->getAccessToken();
    $getRefreshToken = $client->getRefreshToken();

} 
else 
{
    // Return to login
    $googleAuthUrl = $client->createAuthUrl();
    // Redirect user to authentication URI

}

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню