コールバックで帰ってくるってのがよくわかんなかった話

簡単なmixiアプリさえつくれない

widget.xml

<span id="message"></span>
<script>
opensocial.requestShareApp("VIEWER_FRIENDS", null, function(response) {

		var url = "http://hogehoge.com/";
		var params = {};
		params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
		params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
		params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(post_data);
		params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.NONE;
		gadgets.io.makeRequest(url, function(response){
			document.getElementById('message').innerHTML = response.text;
		} , params);
});
</script>

views.py

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse

@csrf_exempt
def mixi(request):
    return HttpResponse('hogehoge')

ほとんどサンプルコードの丸写し。これをDjangoの鯖にPOSTで渡す方法がわからなくて模索していた。thx @torufurukawa

処理の流れ

  • gadgets.io.makeRequest(url, callback, params)が主な処理
    • urlに渡したいURLを設定
    • paramsにいろんなオプションを設定する
  • こうするとURLにリクエストが飛ぶ。URLにリクエストが飛んだらDjango側で処理する。この場合は'hogehoge'と返す
  • Django側で処理した内容が入った関数が実行される(callback)。この場合はmessageにhogehogeを追加する

注意点

csrf_exemptをつけないとCSRF対策のエラーが出るのデコレータとしてつけておく

蛇足

しにたい