私は過去にこの問題に遭遇し、今までそれを回避することができました。アプリ エンジンで Twitch API を呼び出すと、エラー 400 が発生します。Google グループの 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'