Google UrlShortener API를 사용하여 OAuth2 및 API 키가있는 기록을 검색하려고합니다. 나는 200 OK 응답을 얻고있다. 그러나 pagetoken이나 pageToken을 쿼리 매개 변수로 사용하여 후속 페이지를 만들 때 나는 항상 같은 nextPageToken과 같은 결과 페이지를 얻는다. 이상하게도 브라우저 기반 Google API 상호 작용은 pagetoken 또는 pageToken이 아닌 시작 토큰을 사용하지만 시작 토큰을 사용할 때 200 OK를 얻지 못합니다.Google URL Shortener API는 항상 pagetoken을 사용하여 동일한 페이지를 반환합니다.
페이지 나누기를 UrlShortener API와 함께 사용하려면 어떻게해야합니까?
import requests
import json
import time
import settings
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run_flow
from oauth2client.file import Storage
def history():
"""Look up a user's history"""
flow = OAuth2WebServerFlow(client_id=settings.OAUTH2_CLIENT_ID,
client_secret=settings.CLIENT_SECRET,
scope='https://www.googleapis.com/auth/urlshortener',
redirect_uri='http://127.0.0.1:5000/callback')
storage = Storage('creds.data')
credentials = run_flow(flow, storage)
print("access_token: {}".format(credentials.access_token))
headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer {}'.format(credentials.access_token)}
raw_url = 'https://www.googleapis.com/urlshortener/v1/url/history'
url = raw_url + '?key={}'.format(settings.API_KEY)
r = requests.get(url=url, headers=headers)
if r.ok:
output = "The history is {}.".format(r.json())
print(output)
if 'nextPageToken' in r.json().keys():
morePages = True
npt = r.json()['nextPageToken']
r_paged = None
while morePages:
time.sleep(2)
url = raw_url + '?pagetoken={}&key={}'.format(npt, settings.API_KEY)
r_paged = requests.get(url=url, headers=headers)
if r_paged.ok:
if 'nextPageToken' in r_paged.json().keys():
npt = r_paged.json()['nextPageToken']
morePages = True
else:
morePages = False
break
output = "The history is {}.".format(r_paged.json())
print(output)
else:
output = "Invalid request. Status code = {}, json = {}".format(r_paged.status_code, r_paged.json())
print(output)
else:
output = "Invalid request. Status code = {}, json = {}".format(r.status_code, r.json())
print(output)