运行Google"Hello Analytics"API教程时,如何避免此X-Frame-Options SAMEORIGIN错误?

Ale*_*yer 21 javascript api google-analytics

我一直在尝试运行https://developers.google.com/analytics/solutions/articles/hello-analytics-api教程来启动并运行从Google Analytics以编程方式提取数据.

我已经完全复制了示例文件,但是当我通过Chrome中的localhost访问它们时,我在JavaScript控制台中收到以下错误,并被重定向到about:blank:

Refused to display 'https://accounts.google.com/o/oauth2/auth?client_id=363192057646-fbj7q1oais...%2Flocalhost&response_type=token&state=327475409%7C0.2024869166&authuser=0' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过所有方式的调整,但不能让这个错误消失.希望有人可以提供帮助(或者实际上只是指导我使用一个简单,有效的Javascript示例来访问Google AnalyticsAPI.

ell*_*ock 17

请 在您的Oauth设置中查看Google API控制台中的授权JavaScript来源网址.这必须是您授权javascript的地方.


Gle*_*ler 7

昨天我遇到了同样的问题但后来我意识到我在我的凭据上使​​用了错误的客户端ID.

您应仔细检查是否在API和auth>凭据上创建了"Web应用程序的客户端ID" .然后使用该客户端ID.

我的情况是,我错误地创建了一个"服务帐户"并使用了该客户端ID.然后我意识到了这个错误并创建了一个" Web应用程序 "并替换了hello_analytics_api_v3_auth.js上的客户端ID(根据https://developers.google.com/analytics/solutions/articles/hello-analytics-api上的教程).

顺便说一句,不要忘记创建一个公共API访问密钥.

编辑:如果您使用谷歌示例修复以下功能:

function handleAuthResult(authResult) {
  if (authResult) {
    gapi.client.load('analytics', 'v3', handleAuthorized);
  } else {
    handleUnauthorized();
  }
}
Run Code Online (Sandbox Code Playgroud)

在if语句中,更改为:

if (authResult && !authResult.error)
Run Code Online (Sandbox Code Playgroud)

所以你最终得到:

function handleAuthResult(authResult) {
  if (authResult && !authResult.error) {
    gapi.client.load('analytics', 'v3', handleAuthorized);
  } else {
    handleUnauthorized();
  }
}
Run Code Online (Sandbox Code Playgroud)

我的同事找到了这个bug并发出拉动请求来修复它.我希望现在能够解决这个问题.它为我排序;-)