Я пытаюсь использовать API Google Ads с Python 3, и у меня возникла проблема с их файлом generate_refresh_token.py. Файл был обновлен для Python 3, но мне нужно его отладить, так как в нем все еще есть код Python 2. Например, в операторах печати не было () и был экземпляр использования raw_input() вместо input().
Во всяком случае, я получаю сообщение об ошибке, которое я не могу понять. Может кто-нибудь, пожалуйста, помогите мне здесь?
Я попытался найти решение в Google, но я немного потерялся здесь.
Код начинается со строки 110 и заканчивается строкой 122:
print ('Access token: %s') % flow.credentials.token
print ('Refresh token: %s') % flow.credentials.refresh_token
if __name__ == '__main__':
args = parser.parse_args()
configured_scopes = [SCOPE]
if not (any([args.client_id, DEFAULT_CLIENT_ID]) and
any([args.client_secret, DEFAULT_CLIENT_SECRET])):
raise AttributeError('No client_id or client_secret specified.')
if args.additional_scopes:
configured_scopes.extend(args.additional_scopes.replace(' ', '').split(','))
main(args.client_id, args.client_secret, configured_scopes)
Предполагается, что код выбрасывает токен доступа, который я могу использовать, но он дает мне эту ошибку:
Access token: %s
Traceback (most recent call last):
File "generate_refresh_token.py", line 122, in <module>
main(args.client_id, args.client_secret, configured_scopes)
File "generate_refresh_token.py", line 110, in main
print ('Access token: %s') % flow.credentials.token
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
Я считаю, что это также проблема Python 2 и Python 3, и я был бы признателен, если бы кто-нибудь помог мне с этим!
У вас опечатка со скобками. Печать должна быть:
print('Access token: %s'% flow.credentials.token)
print('Refresh token: %s' % flow.credentials.refresh_token)
Для безопасности используйте формат:
print('Access token: {}'.format(flow.credentials.token))
print('Refresh token: {}'.format(flow.credentials.refresh_token))
Обновите операторы печати.
print ('Access token: {}'.format(flow.credentials.token))
print ('Refresh token: {}'.format(flow.credentials.refresh_token))
Дайте мне знать, если мне нужно предоставить какую-либо дополнительную информацию с этим