Google analytics ';谷歌例外';带有消息';通过身份验证后无法添加服务';
我正在使用Oauth 2.0开发一个带有Google Analytics的WP插件 我所有的身份验证和数据提取都可以正常工作,但有一个问题除外:我第一次获得一个新的Google授权码(例如:“4/-xbSbg…)&身份验证,然后尝试调用一个新的Google_AnalyticsService()对象,它会抛出错误: “Google_异常”,消息为“经过身份验证后无法添加服务” 这是第109行: 一旦我刷新调用此代码的页面,它就可以正常工作了-即,check_login()的第一个分支正常,但身份验证调用无法正常工作 您可以看到,代码似乎在抱怨,因为我先进行了身份验证,消息说我不应该这样做。注释和代码真的让我困惑我的问题是什么(我意识到登录代码还不是很干净) 重要提示:我正在使用GoogleAuth安装应用程序,因此我们要求用户提供身份验证代码,并使用该代码获取身份验证令牌 get_option()、set_option()和update_option()是WP本机函数,不属于问题的一部分 这是我的密码:Google analytics ';谷歌例外';带有消息';通过身份验证后无法添加服务';,google-analytics,oauth-2.0,google-authentication,Google Analytics,Oauth 2.0,Google Authentication,我正在使用Oauth 2.0开发一个带有Google Analytics的WP插件 我所有的身份验证和数据提取都可以正常工作,但有一个问题除外:我第一次获得一个新的Google授权码(例如:“4/-xbSbg…)&身份验证,然后尝试调用一个新的Google_AnalyticsService()对象,它会抛出错误: “Google_异常”,消息为“经过身份验证后无法添加服务” 这是第109行: 一旦我刷新调用此代码的页面,它就可以正常工作了-即,check_login()的第一个分支正常,但身份验
class GoogleAnalyticsStats
{
var $client = false;
function GoogleAnalyticsStats()
{
$this->client = new Google_Client();
$this->client->setClientId(GOOGLE_ANALYTICATOR_CLIENTID);
$this->client->setClientSecret(GOOGLE_ANALYTICATOR_CLIENTSECRET);
$this->client->setRedirectUri(GOOGLE_ANALYTICATOR_REDIRECT);
$this->client->setScopes(array(GOOGLE_ANALYTICATOR_SCOPE));
// Magic. Returns objects from the Analytics Service instead of associative arrays.
$this->client->setUseObjects(true);
}
function checkLogin()
{
$ga_google_authtoken = get_option('ga_google_authtoken');
if (!empty($ga_google_authtoken))
{
$this->client->setAccessToken($ga_google_authtoken);
}
else
{
$authCode = get_option('ga_google_token');
if (empty($authCode)) return false;
$accessToken = $this->client->authenticate($authCode);
$this->client->setAccessToken($accessToken);
update_option('ga_google_authtoken', $accessToken);
}
return true;
}
function getSingleProfile()
{
$analytics = new Google_AnalyticsService($this->client);
}
}
您需要移动
$analytics=新的谷歌分析服务($this->client)
在函数GoogleAnalyticsStats()中,最好将$analytics转换为成员变量
class GoogleAnalyticsStats
{
var $client = false;
var $analytics = false;
function GoogleAnalyticsStats()
{
$this->client = new Google_Client();
$this->client->setClientId(GOOGLE_ANALYTICATOR_CLIENTID);
$this->client->setClientSecret(GOOGLE_ANALYTICATOR_CLIENTSECRET);
$this->client->setRedirectUri(GOOGLE_ANALYTICATOR_REDIRECT);
$this->client->setScopes(array(GOOGLE_ANALYTICATOR_SCOPE));
// Magic. Returns objects from the Analytics Service instead of associative arrays.
$this->client->setUseObjects(true);
$this->analytics = new Google_AnalyticsService($this->client);
}
...
现在,您可以从
getSingleProfile
中调用analytics API,谢谢!出于某种原因,我认为Google_AnalyticsService需要首先获得授权,但当然,除非你尝试使用它。