Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Evernote访问令牌Python_Python_Oauth_Evernote - Fatal编程技术网

Evernote访问令牌Python

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

我正试图通过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

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))

谢谢我能够检索临时令牌。但用户通过授权后,无法获得访问令牌。