15

Instapaperのシンプルな開発者APIを使用して、PythonとRequestsライブラリを使用してブックマークにURLを追加しようとしています。ユーザー名とパスワードを認証するには、すべてうまくいきます。

import requests
from requests.auth import HTTPBasicAuth
requests.get('https://www.instapaper.com/api/authenticate', auth=HTTPBasicAuth('username', 'password'))

しかし、APIを使用してブックマークを追加しようとすると、次のようになります。

 requests.get('https://www.instapaper.com/api/add', auth=HTTPBasicAuth('username', 'password','websiteUrl')) 

エラーが発生します:

File "instantbookmark.py", line 3, in <module>
   getA = requests.get('https://www.instapaper.com/api/add',     auth=HTTPBasicAuth('username', 'password','websiteUrl'))
TypeError: __init__() takes exactly 3 arguments (4 given)

これは、HTTPBasicAuthが3番目の引数を取ることができないためだと思いますが、これを行う方法を知っている人はいますか?

4

1 に答える 1

17

HTTPBasicAuth()ユーザー名とパスワードの引数のみを取ります。第 3 引数、ピリオドはありません。

HTTP 基本認証は、追加のヘッダーを要求に追加します。この情報は、GET または POST パラメーターとは別に保持されます。この形式の認証を使用する場合、API メソッドにパラメータusernameとパラメータを渡す必要もありません。password

ブックマークを追加するには、urlパラメータを POST または GET データ パラメータとして渡します。

 requests.post('https://www.instapaper.com/api/add', data={'url': 'websiteUrl'}, auth=HTTPBasicAuth('username', 'password'))

どちらかrequests.get()またはrequests.post()するでしょう。

于 2013-02-10T12:41:08.790 に答える