我的google + api代码正常运行。突然,我在下一行收到错误。任何帮助表示赞赏。
if (isset($_SESSION['access_token'])) {
$client->setAccessToken($_SESSION['access_token']);
}
错误信息如下
Warning: json_decode() expects parameter 1 to be string, array given in /opt/bitnami/apache2/htdocs/goo/src/auth/apiOAuth2.php on line 142 Fatal error: Uncaught exception 'apiAuthException' with message 'Could not json decode the access token' in /opt/bitnami/apache2/htdocs/goo/src/auth/apiOAuth2.php:144 Stack trace: #0 /opt/bitnami/apache2/htdocs/goo/src/apiClient.php(186): apiOAuth2->setAccessToken(Array) #1 /opt/bitnami/apache2/htdocs/goo/googlep.php(1196): apiClient->setAccessToken(Array) #2 {main} thrown in /opt/bitnami/apache2/htdocs/goor/src/auth/apiOAuth2.php on line 144
答案 0 :(得分:1)
我前一段时间也有同样的错误。 实际上这个函数setAccessToken只接受json_encoded字符串(简单地说是用户验证时获得的json编码字符串,它具有访问令牌,刷新令牌,承载等)。您必须将该json编码的字符串传递给此函数以设置访问令牌。 $ client = new Google_Client();
$ token = $ client-> getAccessToken(); //当Google将身份验证后的用户重定向到您的重定向uri时,获取令牌。 // $ token将有json编码的字符串。
$客户端 - > setAccessToken($令牌); //现在使用$ token
设置访问令牌如果您将一个数组或其他任何json编码的字符串传递给setAccessToken,您将收到此错误。
答案 1 :(得分:1)
您的错误可能是因为$_SESSION['access_token']
。我曾经使用过gplus和twitter api,他们都在使用那个变量$_SESSION['access_token']
。
只需在您的google plus代码中修改access_token
到access_token_plus
或您喜欢的任何内容,这样您就可以避免重写冲突。