【问题标题】:subscribing to a tag with python-instagram API in python failing在 python 中使用 python-instagram API 订阅标签失败
【发布时间】:2014-05-07 05:55:22
【问题描述】:

我正在尝试使用 python-instagram 包装器订阅一个主题标签。我以前使用 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)

我得到的错误是: Traceback(最近一次调用最后一次):

  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 方法做了一些奇怪的事情,我不知道是什么。最终目标是订阅标签并接收标签发布的新图片。

【问题讨论】:

    标签: python instagram


    【解决方案1】:

    这可能是由于各种问题造成的:

    1. 确保您的 callback_url 已启动并可用于远程主机

    2. 调试您的握手()并确保您返回值(放置打印)

    3. 调试您的 /usr/local/lib/python2.7/dist-packages/instagram/bind.py 并查看带有错误消息的响应,这可能是答案))

    4. 请握手()以接受来自 instagram 的 POST

    5. 在这种情况下你可能应该使用经过身份验证的 api

    【讨论】:

      【解决方案2】:

      文档有误。您需要像这样创建 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
      

      【讨论】:

        猜你喜欢
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 2013-12-07
        • 1970-01-01
        • 2015-12-10
        • 1970-01-01
        • 2021-06-04
        相关资源
        最近更新 更多