Oauth请求已过期

时间:2019-05-05 20:50:00

标签: python python-3.x oauth

我想获取用户关于Goodreads的书籍,并修改以下代码:

# oauth example for goodreads
#
# based on code found in https://gist.github.com/gpiancastelli/537923 by Giulio Piancastelli
#
# edit script with your dev key and secret
# run it
# visit the url
# confirm that you have accepted
# write down token!
#

import oauth2 as oauth
import urllib
#import urlparse

url = 'http://www.goodreads.com'
request_token_url = '%s/oauth/request_token' % url
authorize_url = '%s/oauth/authorize' % url
access_token_url = '%s/oauth/access_token' % url

consumer = oauth.Consumer(key='the-key-goodreads-gave-me',
                          secret='the-secret-goodreads-gave-me')

client = oauth.Client(consumer)

response, content = client.request(request_token_url, 'GET')
if response['status'] != '200':
    raise Exception('Invalid response: %s, content: ' % response['status'] + content)

request_token = dict(urllib.parse.parse_qs(content))

authorize_link = '%s?oauth_token=%s' % (authorize_url,
                                        request_token[b'oauth_token'])
print("Use a browser to visit this link and accept your application:")
print(authorize_link)
accepted = 'n'
while accepted.lower() == 'n':
    # you need to access the authorize_link via a browser,
    # and proceed to manually authorize the consumer
    accepted = input('Have you authorized me? (y/n) ')

token = oauth.Token(request_token[b'oauth_token'],
                    request_token[b'oauth_token_secret'])

client = oauth.Client(consumer, token)
response, content = client.request(access_token_url, 'POST')
if response['status'] != '200':
    raise Exception('Invalid response: %s' % response['status'])

access_token = dict(urlparse.parse_qsl(content))

# this is the token you should save for future uses
print('Save this for later: ')
print('oauth token key:    ' + access_token['oauth_token'])
print('oauth token secret: ' + access_token['oauth_token_secret'])

token = oauth.Token(access_token['oauth_token'],
                    access_token['oauth_token_secret'])


#
# As an example, let's add a book to one of the user's shelves
#
add_to_list = False

def addABook():
    client = oauth.Client(consumer, token)
    # the book is: "Generation A" by Douglas Coupland
    body = urllib.urlencode({'name': 'to-read', 'book_id': 6801825})
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response, content = client.request('%s/shelf/add_to_shelf.xml' % url,
                                   'POST', body, headers)
    # check that the new resource has been created
    if response['status'] != '201':
        raise Exception('Cannot create resource: %s' % response['status'])
    else:
        print('Book added!')


if add_to_list:
    addABook()

## END ##

但是一方面它会返回我:

Use a browser to visit this link and accept your application:
http://www.goodreads.com/oauth/authorize?oauth_token=[b'8pnY9thmmEirqqwz2EgZrw']
Have you authorized me? (y/n) 

而且我无法接受邀请,因为它写的是关于以下内容的好书:

  

此Oauth请求存在错误   这可能是由于请求已过期。如果此错误继续发生,请通知应用程序的所有者。

0 个答案:

没有答案