我正在尝试使用python-instagram包装器为python订阅一个#标签。我以前使用cURL来执行身份验证握手,它工作正常。但是,我想使用所有包装器功能。
from instagram import client, subscriptions
from flask import Flask, request, render_template, session, redirect, abort, flash, jsonify
app = Flask(__name__)
api = client.InstagramAPI(client_id="", client_secret="")
callback_url = 'http://localhost.com:515'
api.create_subscription(object='tag',object_id='bacon', aspect='media', callback_url=callback_url)
@app.route('/', methods=['GET'])
def handshake():
code = request.args.get('hub.challenge')
if code:
return code
if __name__ == '__main__':
app.debug = True
app.run(host='localhost.com',port=515)
我得到的错误是: 回溯(最近一次调用最后一次):
File "test.py", line 10, in <module>
api.create_subscription(object='tag',object_id='bacon', aspect='media', callback_url=callback_url)
File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 152, in _call
return method.execute()
File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 144, in execute
content, next = self._do_api_request(url, method, body, headers)
File "/usr/local/lib/python2.7/dist-packages/instagram/bind.py", line 100, in _do_api_request
raise InstagramClientError('Unable to parse response, not valid JSON.')
instagram.bind.InstagramClientError: Unable to parse response, not valid JSON.
当我删除create_subscription行时似乎没问题,但是create_subscription方法做了一些奇怪的事情,我无法弄清楚是什么。最终目标是订阅标签并接收随标签张贴的新图片。
答案 0 :(得分:0)
这可能是由于各种问题造成的:
确保您的callback_url已启动且可用于远程主机
调试握手()并确保返回值(放置打印件)
调试你的/usr/local/lib/python2.7/dist-packages/instagram/bind.py并看到带有错误信息的回复,这可能是答案))
让握手()接受来自Instagram的POST
在这种情况下,你可能应该使用经过身份验证的api
答案 1 :(得分:0)
文档错误。你需要像这样创建一个InstagramAPI实例:
client = InstagramAPI(access_token=my_access_token,
client_id=my_client_id,
client_secret=my_client_secret)
如果您需要进行身份验证,则必须这样做:
client = InstagramAPI(client_id=my_client_id,
client_secret=my_client_secret,
redirect_uri="http://localhost")
authurl = client.get_authorize_login_url(scope=["basic", "relationships", "likes", "public_content"]) # or whatever scopes you need