尝试从Google Drive Api v3获取文件列表时出现编码错误

时间:2019-05-29 01:03:44

标签: python api flask google-drive-api drive

我正在尝试学习如何对查询Google Drive Api的网络应用进行编程。我的网站位于python-Flask中。我已经成功完成了大多数细节,但是我被困在这里:

@app.route('/analyze')
def analyze():
    if 'credentials' not in session:
        return redirect('authorize')
    credentials = google.oauth2.credentials.Credentials(session['credentials'])

drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
    files = drive_service.files().list().execute()

从会话加载凭据(用户在不同的页面/脚本中通过授权流)。在此脚本上,我们恢复会话并致电Google Api:

但是呼叫drive.files().list().execute()失败

该错误在API的响应中,如下所示:

  

ValueError:{'client_id':'heregoesclientid','client_secret':'thisisclientsecret','refresh_token':'xxxxxxxxxxxxxxxxxx','scopes':['{https://www.googleapis.com/auth/drive'],'token':'xxxxxxxxxxxxxxxxxxxxxxxx ','token_uri':'https://oauth2.googleapis.com/token'}无法转换为Unicode

为什么不能将响应转换为Unicode?这是Google API中的错误吗?有什么我可以解决的吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是google-auth包,则需要将值分别传递到Credentials中,而不要使用字典:See here

您的代码如下所示:

    sc = session['credentials']
    credentials = google.oauth2.credentials.Credentials(
        token=sc.get('token'),
        client_id=sc.get('client_id'),
        ...etc

    )

希望这会有所帮助,或者如果您不使用google-auth,请告诉我,因为这将是无关紧要的。