如何解决Google OAuth屏幕返回不支持的授权类型错误,并且不允许我进行身份验证
我正在尝试通过youtube数据API v3将视频上传到youtube,但是在尝试进行身份验证时遇到错误,我已经阅读了可以在互联网上找到的所有内容,尝试创建新项目,但没有任何帮助,无论如何我总是会遇到相同的错误。
这是我用来创建服务的代码:
from Google import Create_Service
CLIENT_SECRET_FILE = 'client_secret.json'
API_NAME = 'youtube'
API_VERSION = 'v3'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']
service = Create_Service(CLIENT_SECRET_FILE,API_NAME,API_VERSION,SCOPES)
这是它引用的Google文件(从教程中获取):
import pickle
import os
from google_auth_oauthlib.flow import Flow,InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload,MediaIoBaseDownload
from google.auth.transport.requests import Request
def Create_Service(client_secret_file,api_name,api_version,*scopes):
print(client_secret_file,scopes,sep='-')
CLIENT_SECRET_FILE = client_secret_file
API_SERVICE_NAME = api_name
API_VERSION = api_version
SCOPES = [scope for scope in scopes[0]]
print(SCOPES)
cred = None
pickle_file = f'token_{API_SERVICE_NAME}_{API_VERSION}.pickle'
# print(pickle_file)
if os.path.exists(pickle_file):
with open(pickle_file,'rb') as token:
cred = pickle.load(token)
if not cred or not cred.valid:
if cred and cred.expired and cred.refresh_token:
cred.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE,SCOPES)
cred = flow.run_local_server()
with open(pickle_file,'wb') as token:
pickle.dump(cred,token)
try:
service = build(API_SERVICE_NAME,credentials=cred)
print(API_SERVICE_NAME,'service created successfully')
return service
except Exception as e:
print('Unable to connect.')
print(e)
return None
现在奇怪的是,这一切都可以正常工作,没有问题,我什至已经使用此代码将视频上传到youtube,但是现在它再次要求身份验证,并且当我尝试通过OAuth屏幕授予它时返回此错误:
Traceback (most recent call last):
File "<input>",line 21,in <module>
File "C:\Users\ricsi\Desktop\Automatic Beat Uploader\Google.py",line 31,in Create_Service
cred = flow.run_local_server()
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\google_auth_oauthlib\flow.py",line 460,in run_local_server
self.fetch_token(authorization_response=authorization_response)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\google_auth_oauthlib\flow.py",line 281,in fetch_token
self.client_config['token_uri'],**kwargs)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\requests_oauthlib\oauth2_session.py",line 360,in fetch_token
self._client.parse_request_body_response(r.text,scope=self.scope)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\oauthlib\oauth2\rfc6749\clients\base.py",line 421,in parse_request_body_response
self.token = parse_token_response(body,scope=scope)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\oauthlib\oauth2\rfc6749\parameters.py",line 431,in parse_token_response
validate_token_parameters(params)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\oauthlib\oauth2\rfc6749\parameters.py",line 438,in validate_token_parameters
raise_from_error(params.get('error'),params)
File "C:\Users\ricsi\Anaconda3\envs\Automatic Beat Uploader\lib\site-packages\oauthlib\oauth2\rfc6749\errors.py",line 405,in raise_from_error
raise cls(**kwargs)
oauthlib.oauth2.rfc6749.errors.UnsupportedGrantTypeError: (unsupported_grant_type) Invalid grant_type:
我的client_secret.json文件是我从Google云控制台下载的文件,未更改。
说实话,我很迷茫,不胜感激,我调查了互联网的深处,没有找到任何东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。