Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 plus api请求无效_Php_Oauth_Google Api_Google Plus - Fatal编程技术网

Php google plus api请求无效

Php google plus api请求无效,php,oauth,google-api,google-plus,Php,Oauth,Google Api,Google Plus,过去几天我一直在努力解决这个问题。我已经阅读了所有的论坛,仍然没有解决方案。感谢您的帮助 我一直在尝试使用刷新代码。(我不想重复使用访问代码,因为它过期了)。我的代码基于 代码如下: if (isset($_GET['code'])) { $accessToken = get_oauth2_token($_REQUEST['code'],"online"); //refresh_token not fetched } //注意,如果我用$client->authenticate()和$

过去几天我一直在努力解决这个问题。我已经阅读了所有的论坛,仍然没有解决方案。感谢您的帮助

我一直在尝试使用刷新代码。(我不想重复使用访问代码,因为它过期了)。我的代码基于

代码如下:

if (isset($_GET['code'])) {
    $accessToken = get_oauth2_token($_REQUEST['code'],"online"); //refresh_token not fetched
}

//注意,如果我用$client->authenticate()和$client->getAccessToken()替换上面的行,程序就可以运行了。但是我没有得到刷新代码

$accessToken = $authObj->access_token;
return $accessToken;
下面我从链接粘贴函数

function get_oauth2_token3($grantCode, $grantType) {
$redirect_uri = "xxxx";

$oauth2token_url = "https://accounts.google.com/o/oauth2/token";
$clienttoken_post = array(
    "client_id" => GCLIENT_ID,
    "client_secret" => GCLIENT_SECRET);

if ($grantType === "online") {
    $clienttoken_post["code"] = $grantCode;
    $clienttoken_post["redirect_uri"] = $redirect_uri;
    $clienttoken_post["grant_type"] = "authorization_code";
}

if ($grantType === "offline") {
    $clienttoken_post["refresh_token"] = $grantCode;
    $clienttoken_post["grant_type"] = "refresh_token";
}

$curl = curl_init($oauth2token_url);

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$json_response = curl_exec($curl);
curl_close($curl);

echo '<pre>';
print_r($grantCode);
print_r($json_response);
print_r(json_decode($json_response));
echo '</pre>';
无刷新令牌 $refreshttoken=$authObj->refresh\u令牌; }

}

修改代码

$accessToken = $authObj->access_token;
return $accessToken;

还将url从更改为

您需要请求令牌以使用“脱机”而不是“联机”,才能取回刷新令牌


有关场景下发生的情况的概述,请参阅,这将有助于理解OAuth 2脱机流程。

您需要请求一个令牌以使用“脱机”而不是“联机”,才能取回刷新令牌


请参阅,了解场景下发生的事情的概述,这将有助于理解OAuth 2脱机流程。

我认为您的代码是正确的。请检查执行步骤以验证是否执行了正确的代码


如果SDK不是最新的,也尝试更新它。当我遇到这个问题时,我更新了SDK,它工作了…

我认为您的代码是正确的。请检查执行步骤以验证是否执行了正确的代码


如果SDK不是最新的,也尝试更新它。当我遇到这个问题时,我更新了SDK,它工作了…

导致此消息的另一个可能原因是客户端ID或客户端机密不正确

导致此消息的另一个可能原因是客户端ID或客户端机密不正确

我更改了它,但现在它显示错误:“无效授权”。还有什么方法可以做到这一点,只要在阅读了我更新代码的文档之后使用PHPSDKHI。现在显示“暂时移动”。我通过添加curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true)解决了这个问题;现在的问题是响应为空。请参阅上面(最后)的“修改代码”部分,我试图打印返回的响应。这实际上是谷歌的登录页面。我刚刚发现,如果我在请求中指定了client\u secret,则表明错误:无效的\u请求参数不允许用于此消息类型:client\u secret,如果删除client\u secret,则表明缺少必需的参数:response\u type。他们的文档显示给出了5个参数,我有所有的5个参数,我没有做任何修改,但现在它显示了错误:“无效的授予”。还有什么方法可以做到这一点,只要在阅读了我更新代码的文档之后使用PHPSDKHI。现在显示“暂时移动”。我通过添加curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true)解决了这个问题;现在的问题是响应为空。请参阅上面(最后)的“修改代码”部分,我试图打印返回的响应。这实际上是谷歌的登录页面。我刚刚发现,如果我在请求中指定了client\u secret,则表明错误:无效的\u请求参数不允许用于此消息类型:client\u secret,如果删除client\u secret,则表明缺少必需的参数:response\u type。他们的文档显示要给出5个参数,我有全部5个参数,仅此而已
if ($grantType === "offline") {
    $clienttoken_post["grant_type"] = "authorization_code";
    $clienttoken_post["response_type"] = "code";

    $clienttoken_post["scope"] = "https://www.googleapis.com/auth/plus.me";
    $clienttoken_post["redirect_uri"] = $redirect_uri;
}