googleapi python как получить / refre sh токен доступа - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь настроить Google Analytics на одном из своих блогов. Я использую клиентскую библиотеку google api. Код работает нормально, если я вручную получаю токен доступа с сайта: https://developers.google.com/oauthplayground/. Мне сложно обновить access_token. Может ли кто-нибудь помочь мне в этом, поскольку я новичок в Google Analytics. Поделитесь фрагментом кода python, пожалуйста.

import httplib2
import httplib2 as lib2
import google.oauth2.credentials
# from google.auth.transport import requests
import requests
from google_auth_httplib2 import AuthorizedHttp
from oauth2client import client, GOOGLE_TOKEN_URI

from googleapiclient.discovery import build as google_build

# This is consistent for all Google services
token_uri = 'https://accounts.google.com/o/oauth2/token'

# WORKING CODE BUT REQUIRES VALID ACCESS_TOKEN
credentials = google.oauth2.credentials.Credentials(None,
                                                    refresh_token=refresh_token,
                                                  token_uri='https://accounts.google.com/o/oauth2/token',
                                                    client_id=client_id,
                                                    client_secret=client_secret)

credentials = google.oauth2.credentials.Credentials(access_token)
authorized = AuthorizedHttp(credentials=credentials)
print(access_token)

# API Name and Verison, these don't change until
# they release a new API version for us to play with.
api_name = 'analyticsreporting'
api_version = 'v4'

# Let's build the client
api_client = google_build(serviceName=api_name, version=api_version, http=authorized)

sample_request = {
    'viewId': 'xxxxxxxx',
    'dateRanges': {
        'startDate': datetime.strftime(datetime.now() - timedelta(days=120), '%Y-%m-%d'),
        'endDate': datetime.strftime(datetime.now(), '%Y-%m-%d')
    },
    'dimensions': [{'name': 'ga:date'}],
    'metrics': [{'expression': 'ga:sessions'}]
}

response = api_client.reports().batchGet(
    body={
        'reportRequests': sample_request
    }).execute()
print(response)

Я оставил ACCESS_TOKEN как none для получения начального токена доступа, который, кажется, работает, когда я его распечатываю, но я не мог найти способ refre sh this access_token, используя этот api учетных данных, поскольку он также не имеет атрибутов expires_at или expiry. Область URL-адреса будет 'https://www.googleapis.com/auth/analytics.readonly'

При запуске приведенного выше кода для refre sh ACCESS TOKEN я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "E:/PyCharm_Workspace/MLPractices/GA3.py", line 78, in <module>
    'reportRequests': sample_request
  File "E:\PyCharm_Workspace\MLPractices\venv\lib\site-packages\googleapiclient\_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "E:\PyCharm_Workspace\MLPractices\venv\lib\site-packages\googleapiclient\http.py", line 901, in execute
    headers=self.headers,
  File "E:\PyCharm_Workspace\MLPractices\venv\lib\site-packages\googleapiclient\http.py", line 177, in _retry_request
    resp, content = http.request(uri, method, *args, **kwargs)
  File "E:\PyCharm_Workspace\MLPractices\venv\lib\site-packages\google_auth_httplib2.py", line 213, in request
    self.credentials.refresh(self._request)
  File "E:\PyCharm_Workspace\MLPractices\venv\lib\site-packages\google\oauth2\credentials.py", line 172, in refresh
    "The credentials do not contain the necessary fields need to "
google.auth.exceptions.RefreshError: The credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_uri, client_id, and client_secret.

Спасибо заранее

Юва

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Всем спасибо. Можно было получить доступ к аналитике Google, используя учетные данные учетной записи службы вместо OAUTH - client_secrets. Использование сервисной учетной записи кажется простым, поскольку теперь мне не нужно обновлять sh токенов.

Но я думаю, какой из них лучше и безопаснее, любые мысли, пожалуйста. Также это самая последняя ссылка на доступ к Google Analytics V4, выпущенная в 2020 г. Ссылка: https://www.jcchouinard.com/google-analytics-api-using-python/

0 голосов
/ 26 мая 2020

Вы получите refre sh токен с токеном доступа впервые. Ваш токен refre sh долговечен. Таким образом, вы можете сохранить его где-нибудь в базе данных, чтобы использовать его позже. Всякий раз, когда вам нужен токен доступа, используйте этот токен refre sh и сгенерируйте новый.

Google API: получение учетных данных из токена refre sh с помощью oauth2client.client

Ссылка выше вам поможет.

...