Evernote访问令牌Python
我正试图通过Python通过以下文档检索Evernote OAuth访问令牌。但是,多次尝试后,我无法检索临时访问令牌,这是此三条腿授权的第一步 知道我做错了什么吗Evernote访问令牌Python,python,oauth,evernote,Python,Oauth,Evernote,我正试图通过Python通过以下文档检索Evernote OAuth访问令牌。但是,多次尝试后,我无法检索临时访问令牌,这是此三条腿授权的第一步 知道我做错了什么吗 import time import base64 import random import uuid import urllib import collections import urllib.parse import hmac import hashlib import binascii import requests de
import time
import base64
import random
import uuid
import urllib
import collections
import urllib.parse
import hmac
import hashlib
import binascii
import requests
def escape(s):
return urllib.parse.quote(s, safe='~')
def get_nonce():
return uuid.uuid4().hex
def stringify_parameters(parameters):
output = ''
ordered_parameters = {}
ordered_parameters =
collections.OrderedDict(sorted(parameters.items()))
counter = 1
for k, v in ordered_parameters.items():
output += escape(str(k)) + '=' + escape(str(v))
if counter < len(ordered_parameters):
output += '&'
counter += 1
return output
oauth_parameters={
'oauth_timestamp': str(int(time.time())),
'oauth_signature_method': "HMAC-SHA1",
'oauth_version': "1.0",
'oauth_nonce': get_nonce(),
'oauth_consumer_key': 'consumerkey',
'oauth_callback':'http://localhost'
}
string_parameters=stringify_parameters(oauth_parameters)
secret='secret'
signature = hmac.new(secret.encode(), string_parameters.encode(),hashlib.sha1).digest()
oauth_parameters['oauth_signature']=escape(base64.b64encode(signature).decode())
res=requests.get('https://sandbox.evernote.com/oauth?'+stringify_parameters(oauth_parameters))
print(res.status_code)
导入时间
导入base64
随机输入
导入uuid
导入URL库
导入集合
导入urllib.parse
进口hmac
导入hashlib
导入binascii
导入请求
def逃逸:
返回urllib.parse.quote(s,safe='~')
def get_nonce():
返回uuid.uuid4().hex
def stringify_参数(参数):
输出=“”
有序_参数={}
有序参数=
collections.OrderedDict(已排序(parameters.items()))
计数器=1
对于有序_参数中的k,v.items():
输出+=转义(str(k))+'='+转义(str(v))
如果计数器
我认为您创建签名的方式不正确。这对我很有用:
key = (escape(secret)+'&').encode()
message = ('GET&' + escape('https://sandbox.evernote.com/oauth') + '&' + escape(string_parameters)).encode()
signature = hmac.new(key, message, hashlib.sha1).digest()
oauth_parameters['oauth_signature'] = base64.b64encode(signature).decode()
res = requests.get('https://sandbox.evernote.com/oauth?' + stringify_parameters(oauth_parameters))
谢谢我能够检索临时令牌。但用户通过授权后,无法获得访问令牌。