我们使用客户端库的 PHP 版本来创建授权凭证,然后我们将其存储在数据库中。我想编写一个脚本,使用与 python 相同的凭据。我尝试使用 client.Credentials.new_from_json(),但后来意识到我们存储的并不是该方法所需的所有内容。
因此,我正在寻找有关是否应该以不同方式存储数据的建议(从 PHP 检索时),或者是否应该能够仅使用我们当前存储的授权令牌以另一种方法创建 Credentials 对象。
为清楚起见,以下是我们当前存储的内容:
{"access_token":"这里的字符串","token_type":"Bearer","expires_in":3600,"id_token":"这里的字符串" ,"refresh_token":"这里的字符串"}
感谢您的任何建议!
编辑:
我破解了它以使用以下代码。我认为很明显这不是一个好的解决方案,但只是想确保我走在正确的轨道上,并且理论上一切都会正常工作,一旦我以某种方式获得了一个格式良好的 Credentials 对象。
secrets = [the contents of client_secrets.json]
creds = '{"access_token":"string here","token_type":"Bearer","expires_in":3600,"id_token":"string here","refresh_token":"string here"}'
creds_dict = json.loads(creds)
creds_dict['_module'] = "oauth2client.client"
creds_dict['_class'] = "OAuth2Credentials"
creds_dict['client_id'] = secrets['installed']['client_id']
creds_dict['client_secret'] = secrets['installed']['client_secret']
#this is a date a la "2013-09-23T06:13:04Z" in a real to_json formed Credentials object
creds_dict['token_expiry'] = 'none'
creds_dict['token_uri'] = 'https://accounts.google.com/o/oauth2/token'
creds_dict['user_agent'] = None
creds_dict['invalid'] = False
creds_final = json.dumps(creds_dict)
return creds_final