我过去遇到过这个问题,直到现在都能够解决它。在应用程序引擎中调用 Twitch API 时,我收到错误 400。我去过谷歌群组 twitch 页面,以及 twitch tv 自己的论坛。
我能够在 Twitch TV 和 App Engine 上与很多人交谈,但不幸的是,我无法解决这个问题。为了澄清我的问题,我已经能够制作一个简单的应用程序来直接复制当我尝试对 Twitch TV 的 API 进行 URL 调用时发生的事情。
概括:
这是部署我的应用程序时失败的简单代码,但在 localhost 环境中可以完美运行:
import webapp2
import urllib2
class MainHandler(webapp2.RequestHandler):
def get(self):
url = ('https://api.twitch.tv/kraken/streams/nl_kripp')
contents = urllib2.urlopen(url)
self.response.out.write(contents.read())
app = webapp2.WSGIApplication([('/', MainHandler)],
debug=True)
下面是这个确切的应用程序在 localhost 上运行时生成的内容(假设也是如此):
twitch.tv/kraken/channels/nl_kripp/features"},"成熟":null,"video_banner":"http://static-cdn.jtvnw.net/jtv_user_pictures/nl_kripp-channel_offline_image-f3ad1124bc19cffd-640x360.png", "display_name":"nl_Kripp","status":"nolife Kripparrian -- GW2 Ranger Lvling。服务器 = Maguuma"},"preview":"http://static-cdn.jtvnw.net/previews/live_user_nl_kripp-630x473.jpg","partner":true},"_links":{"self":"https ://api.twitch.tv/kraken/streams/nl_kripp"}}
现在在 App Engine 环境中同样的应用程序:
http://urltestingsite.appspot.com/
我花了很长时间试图解决这个问题,因为它是我网站中的主要链接。有谁知道为什么会发生这种情况?
编辑 - 这是我实际应用程序的代码:
def check_if_live(self, b):
url = ('https://api.twitch.tv/kraken/streams/%s' %b)
url2 = urlfetch.fetch(url, headers = {'User-Agent': "suitegamer_User-Agent"})
contents = urllib2.urlopen(url2)
if (contents.read()).find('{"stream":null,') == 0:
return 'Offline'
else:
return 'Live'
此代码返回此 AttributeError:
AttributeError: '_URLFetchResult' object has no attribute 'get_type'