<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>iPhoneDev. &#187; mixiアプリ モバイル</title>
	<atom:link href="http://www.electrodream.jp/iphonedev/index.php/category/mixi%e3%82%a2%e3%83%97%e3%83%aa-%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.electrodream.jp/iphonedev</link>
	<description>　　　　　iPhoneアプリ制作日記</description>
	<lastBuildDate>Sat, 15 May 2010 23:46:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.electrodream.jp/iphonedev/index.php/category/mixi%e3%82%a2%e3%83%97%e3%83%aa-%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab/feed/" />
		<item>
		<title>mixiアプリモバイル1(GAE/Python)</title>
		<link>http://www.electrodream.jp/iphonedev/index.php/2010/02/mixi%e3%82%a2%e3%83%97%e3%83%aa%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab1gaepython/</link>
		<comments>http://www.electrodream.jp/iphonedev/index.php/2010/02/mixi%e3%82%a2%e3%83%97%e3%83%aa%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab1gaepython/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 11:36:10 +0000</pubDate>
		<dc:creator>kuni</dc:creator>
				<category><![CDATA[mixiアプリ モバイル]]></category>

		<guid isPermaLink="false">http://www.electrodream.jp/iphonedev/?p=557</guid>
		<description><![CDATA[mixiアプリモバイル製作で、 自分が詰まっていた項目を書いていこうと思います。 しかし、ソース全部などはmixiのサンプルも載せないといけなくなり、 それだと規約違反になってしまうと思うので、 mixiのサンプルにどう手を加えていったのかという観点で書いていきます。 まずはかなり基本的な事から・・ （すみません、WEBアプリ超初心者なので、 レベルはかなり低いところから始まってると思います） ●１ mixi developerサイトのサンプルを見て進めていくと、 import oauth 部分でエラーが出てしまう。 これは自前で用意する事になるのですが、自分は http://code.google.com/p/oauth/ を使わせてもらいました。 （oauth.pyをindex.yamlなどと動階層の、一番上の階層に入れておけばOK。） ●２ 携帯向けのページはshift-jisなので mixiのサーバから取得した情報もshift-jisに変換する必要がある。 （当たり前ですね・・。） サンプルに用意されている「getPerson」関数の流れの後だと、 person = get_person(owner_id) entry = person['entry'] displayName = entry['displayName'] displayName = displayName.encode(&#8216;shift-jis&#8217;) といった感じで、一度変換する必要がある。 ●３ mixi developerのサイトのPersistence APIのサンプル create_appdata関数の上の、 params = {&#8216;xoauth_requestor_id&#8217;: &#8217;000000&#8242;} の値は、当然ながら &#8217;000000&#8242;の部分は自前で入れる必要がある。 （これに気づかなく、なんでcreate_appdata関数実行しただけで エラーになるんだろう・・と思っていた。） ページ遷移とAPIアクセス に載っている、 get_person(user_id)関数と同じように、 owner_idを受け取り、その関数の中でparamsを設定するようにすれば いいかと思う。 （むしろサンプルもそうなっていて欲しかった・・みたいな） [...]]]></description>
			<content:encoded><![CDATA[<p>
mixiアプリモバイル製作で、<br />
自分が詰まっていた項目を書いていこうと思います。<br />
<br />
しかし、ソース全部などはmixiのサンプルも載せないといけなくなり、<br />
それだと規約違反になってしまうと思うので、<br />
mixiのサンプルにどう手を加えていったのかという観点で書いていきます。<br />
<br />
まずはかなり基本的な事から・・<br />
（すみません、WEBアプリ超初心者なので、<br />
レベルはかなり低いところから始まってると思います）<br />
<br />
<br />
●１<br />
mixi developerサイトのサンプルを見て進めていくと、<br />
import oauth 部分でエラーが出てしまう。<br />
これは自前で用意する事になるのですが、自分は<br />
<br />
http://code.google.com/p/oauth/<br />
<br />
を使わせてもらいました。<br />
（oauth.pyをindex.yamlなどと動階層の、一番上の階層に入れておけばOK。）<br />
<br />
<br />
●２<br />
携帯向けのページはshift-jisなので<br />
mixiのサーバから取得した情報もshift-jisに変換する必要がある。<br />
（当たり前ですね・・。）<br />
<br />
サンプルに用意されている「getPerson」関数の流れの後だと、<br />
person = get_person(owner_id)<br />
entry = person['entry']<br />
displayName = entry['displayName']<br />
displayName = displayName.encode(&#8216;shift-jis&#8217;)<br />
といった感じで、一度変換する必要がある。<br />
<br />
<br />
●３<br />
mixi developerのサイトのPersistence APIのサンプル<br />
create_appdata関数の上の、<br />
params = {&#8216;xoauth_requestor_id&#8217;: &#8217;000000&#8242;}<br />
の値は、当然ながら &#8217;000000&#8242;の部分は自前で入れる必要がある。<br />
（これに気づかなく、なんでcreate_appdata関数実行しただけで<br />
エラーになるんだろう・・と思っていた。）<br />
<br />
ページ遷移とAPIアクセス に載っている、<br />
get_person(user_id)関数と同じように、<br />
owner_idを受け取り、その関数の中でparamsを設定するようにすれば<br />
いいかと思う。<br />
（むしろサンプルもそうなっていて欲しかった・・みたいな）<br />
<br />
<br />
●４<br />
mixi developerのサイトのPersistence APIのサンプル<br />
read_appdata関数などで良く出てくる、<br />
urllib2.urlopen(r)　は何を返すのか、と言うことが解っていなく、<br />
そのまま出力すると「<」とかが出てしまっていたのですが、<br />
<br />
http://d.hatena.ne.jp/yumimue/20071231/1199129495<br />
<br />
を見させていただくと、文字列のみで返ってくる訳ではないので、<br />
ちゃんと整形する必要がある。（これも当たり前ですね・・。）<br />
<br />
read_appdata関数に付け足すのであれば、<br />
最後のreturnの部分を、<br />
return simplejson.loads(urllib2.urlopen(r).read())<br />
のようにsimplejsonを使い、取りやすく返すようにして、<br />
<br />
readData = read_appdata(&#8216;point&#8217; , owner_id)//3の部分同様、owner_idを送るように改造している//<br />
readData = readData['entry']<br />
readData = readData['mixi.jp:' + owner_id]<br />
readData = readData['point']<br />
でサンプルで保存していた「point」の値が取り出せる。<br />
<br />
<br />
●５<br />
postで送信した際、受け取り側で文字化けする。<br />
これは、<br />
<br />
http://d.hatena.ne.jp/gonsuzuki/20090129/1233298532<br />
<br />
のサイトを参考にさせていただいたのですが、<br />
「self.request.get()を使うまえに、self.request.charsetを定義します」<br />
との書いてある通り、データを、<br />
「self.request.get(&#8220;postData&#8221;)」といった形で受け取る前に、<br />
self.request.charset = &#8220;Shift_JIS&#8221;<br />
を入れて、明確にshift-jisデータだと指定しないといけない。<br />
そうでないと、文字化けどころか、１文字も受け取れなかったりしました。<br />
<br />
<br />
※PC版（JavaScript＋OSDEで作れるのでテストが楽）の方が、<br />
かなりどころか自分でも１週間くらいでそれなりの物が出来たくらい、<br />
作りやすいです。<br />
<br />
モバイルでは、PHPだとデバッグ環境も構築出来るみたいなんですが、<br />
GAE+Pythonでmixiモバイルだと・・無いようなので、<br />
いちいち携帯に転送してテストしてます。かなり・・大変です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electrodream.jp/iphonedev/index.php/2010/02/mixi%e3%82%a2%e3%83%97%e3%83%aa%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab1gaepython/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.electrodream.jp/iphonedev/index.php/2010/02/mixi%e3%82%a2%e3%83%97%e3%83%aa%e3%83%a2%e3%83%90%e3%82%a4%e3%83%ab1gaepython/" />
	</item>
	</channel>
</rss>

