谷歌+ API无法正常工作

时间:2012-10-20 13:32:19

标签: php json google-plus

我的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

2 个答案:

答案 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_tokenaccess_token_plus或您喜欢的任何内容,这样您就可以避免重写冲突。