Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Google访问令牌为空_Php_Codeigniter_Google Api - Fatal编程技术网

Php Google访问令牌为空

Php Google访问令牌为空,php,codeigniter,google-api,Php,Codeigniter,Google Api,我试过使用codeigniter // Initial config $client = new Google_Client(); $client->setApplicationName(APP_NAME); $client->setClientId(CLIENT_ID); $client->setClientSecret(CLIENT_SECRET); $client->setRedirectUri(REDIRECT_URI); $client->setScope

我试过使用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

}
下面我把这段代码放在一个构造中

$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);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getRefreshToken();
    echo $token;
}
然后在方法2中,我将

$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);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getRefreshToken();
    echo $token;
}
您可以看到,我试图打印$token,但它是空的。 我的问题是为什么它是空的

编辑:


甚至getAccessToken也返回空的。

下面是我在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

}

我希望这有帮助。

这是我在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

}
我希望这有帮助。

我刚修好

我的解决方案是,在构造中

$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);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getAccessToken();
    var_dump($token);
}
在方法2中,我有这个

$data['content_data']['google_login_url'] = $this->google->createAuthUrl();
$this->load->view("test", $data);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getAccessToken();
    var_dump($token);
}
这里的$token现在已经有值了

我刚刚修复了它

我的解决方案是,在构造中

$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);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getAccessToken();
    var_dump($token);
}
在方法2中,我有这个

$data['content_data']['google_login_url'] = $this->google->createAuthUrl();
$this->load->view("test", $data);
if (isset($_GET['code'])) {
    $this->google->authenticate($_GET['code']);
    $token = $this->google->getAccessToken();
    var_dump($token);
}

在这里,$token现在已经有了值

使用refresh\u token而不是getrefreshToken要为refresh\u token传递的参数是什么?您是否先加载某种google库?你测试过它被成功加载了吗?我确实调用了$objOAuthService=newgoogle\u Service\u Oauth2($this->Google);在方法调用之前的构造中,它没有返回任何错误Use refresh_token而不是GetRefreshToken要为refresh_token传递什么参数?您是否先加载某种google库?你测试过它被成功加载了吗?我确实调用了$objOAuthService=newgoogle\u Service\u Oauth2($this->Google);在方法调用之前的构造中,它没有返回任何错误