- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我通过这种方式获得了一个刷新 token ,我可以保留它吗?
如果可以,下次要怎么用才能不用开浏览器?
现在我正在考虑直接创建 OAuth2Credentials 对象,这是正确的方法吗?
from urllib.parse import urlparse, parse_qs
from oauth2client.client import flow_from_clientsecrets, OAuth2Credentials
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.contrib import gce
import httplib2
import webbrowser
CLIENT_SECRETS_FILE = "bot_credentials.json"
flow = client.flow_from_clientsecrets(
CLIENT_SECRETS_FILE,
scope=scope,
redirect_uri='http://127.0.0.1:65010')
flow.params['include_granted_scopes'] = 'true'
flow.params['access_type'] = 'offline'
auth_uri = flow.step1_get_authorize_url()
webbrowser.open(auth_uri)
url = input('Please enter the redirected url with code')
code = get_url_param(url, 'code')
if code is None:
print('there is an error in your redirect link with code parameter, check if it exists')
exit()
print(code)
credentials = flow.step2_exchange(code[0])
print(credentials.to_json())#refresh_token here!!!
最佳答案
如果用户同意授权您的应用程序访问这些资源,Google 将向您的应用程序返回一个 token 。根据您的应用程序的类型,它将验证 token 或将其交换为不同类型的 token 。检查这个documentation .
For example, a server-side web application would exchange the returned token for an access token and a refresh token. The access token would let the application authorize requests on the user's behalf, and the refresh token would let the application retrieve a new access token when the original access token expires.
基本上,如果您的应用程序在授权过程中获得刷新 token ,那么您将需要定期使用该 token 来获取新的有效访问 token 。服务器端 Web 应用程序、已安装的应用程序和设备都获得刷新 token 。
据说here您的应用程序可以随时向 Google 的授权服务器发送 POST 请求,指定您的客户端 ID、客户端密码和用户的刷新 token 。该请求还应将 grant_type
参数值设置为 refresh_token
。
The following example demonstrates this request:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_tokenThe authorization server will return a JSON object that contains a new access token:
{
"access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
"expires_in":3920,
"token_type":"Bearer"
}
你可以查看这个sample on GitHub为 YouTube API 生成刷新 token 。请注意,这还将创建一个名为 generate_token.py-oauth
的文件,其中包含此信息。
关于python - 如何为 youtube python api 使用 refresh_token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39751307/
我是一名优秀的程序员,十分优秀!