Oauth 在服务器上托管时重定向到本地主机
Oauth redirects to localhost when hosted on server
希望能帮到你
此脚本在本地适用于 Google Analytics Auth,但是当我将它放在我的服务器上并 运行 使用 python3 xxx.py 并转到 auth URL 它重定向到本地主机,但失败了,因为它在服务器上。
有人知道为什么吗?
甚至是一个很好的 Python 连接到 Google Analytics 的例子。我已经研究了很多,但无法找到我见过的有效示例。
import pandas as pd
import requests
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
flow = InstalledAppFlow.from_client_secrets_file('./client_secret.json', SCOPES)
creds = flow.run_local_server(port=0)
它不起作用,因为您按照示例使用已安装的应用程序进行身份验证
InstalledAppFlow
将在 运行 机器上打开授权网络浏览器 window。如果您打算将其托管在网站上以允许用户访问他们的 google 分析数据,您将需要使用网络浏览器凭据和用于通过网络浏览器进行身份验证的代码。
Oauth2 网络应用程序
我能找到的唯一样本是 YouTube api 您需要将其更改为 Google anltyics
@app.route('/authorize')
def authorize():
# Create a flow instance to manage the OAuth 2.0 Authorization Grant Flow
# steps.
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
CLIENT_SECRETS_FILE, scopes=SCOPES)
flow.redirect_uri = flask.url_for('oauth2callback', _external=True)
authorization_url, state = flow.authorization_url(
# This parameter enables offline access which gives your application
# both an access and refresh token.
access_type='offline',
# This parameter enables incremental auth.
include_granted_scopes='true')
# Store the state in the session so that the callback can verify that
# the authorization server response.
flask.session['state'] = state
return flask.redirect(authorization_url)
可以找到完整的样本here
服务帐号。
如果您只会访问自己的数据而不访问他人拥有的数据,那么您应该考虑使用服务帐户。 Hello Analytics Reporting API v4; Python quickstart for service accounts
这个使用
credentials = ServiceAccountCredentials.from_json_keyfile_name(
KEY_FILE_LOCATION, SCOPES)
希望能帮到你
此脚本在本地适用于 Google Analytics Auth,但是当我将它放在我的服务器上并 运行 使用 python3 xxx.py 并转到 auth URL 它重定向到本地主机,但失败了,因为它在服务器上。
有人知道为什么吗?
甚至是一个很好的 Python 连接到 Google Analytics 的例子。我已经研究了很多,但无法找到我见过的有效示例。
import pandas as pd
import requests
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
flow = InstalledAppFlow.from_client_secrets_file('./client_secret.json', SCOPES)
creds = flow.run_local_server(port=0)
它不起作用,因为您按照示例使用已安装的应用程序进行身份验证
InstalledAppFlow
将在 运行 机器上打开授权网络浏览器 window。如果您打算将其托管在网站上以允许用户访问他们的 google 分析数据,您将需要使用网络浏览器凭据和用于通过网络浏览器进行身份验证的代码。
Oauth2 网络应用程序
我能找到的唯一样本是 YouTube api 您需要将其更改为 Google anltyics
@app.route('/authorize')
def authorize():
# Create a flow instance to manage the OAuth 2.0 Authorization Grant Flow
# steps.
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
CLIENT_SECRETS_FILE, scopes=SCOPES)
flow.redirect_uri = flask.url_for('oauth2callback', _external=True)
authorization_url, state = flow.authorization_url(
# This parameter enables offline access which gives your application
# both an access and refresh token.
access_type='offline',
# This parameter enables incremental auth.
include_granted_scopes='true')
# Store the state in the session so that the callback can verify that
# the authorization server response.
flask.session['state'] = state
return flask.redirect(authorization_url)
可以找到完整的样本here
服务帐号。
如果您只会访问自己的数据而不访问他人拥有的数据,那么您应该考虑使用服务帐户。 Hello Analytics Reporting API v4; Python quickstart for service accounts
这个使用
credentials = ServiceAccountCredentials.from_json_keyfile_name(
KEY_FILE_LOCATION, SCOPES)