2012/10/29

Google App Engine では M2Crypto は使えない?

Android のアプリ内課金(In-App Billing)はサーバー認証を行うべきだというのは書かれているのですが、その方法は日本語サイトではあまり見かけません(セキュリティに関することなので、出てこないのかもしれません)。
そこで、Google App Engine(GAE) を使って、サーバー認証しようと思いました。GAEではPythonとJavaとGOが利用できるので、今回はPythonで作ろうと思いました。

PHPで作成するなら以下のサイトが参考になります。
In-app Billingでsignatureの検証をサーバサイドで行う - isherの日記
android in-app Billingのサーバ側チェック - 私事ですが……


さて、本題。

環境:Windows 7 Professional 64bit, Python2.7(64bit), App Engine SDK 1.7.2

Python でのサーバー認証の方法は以下を参考に M2Crypto を使用してみましたが、
Verifying signature on android in-app purchase message in Python on Google App Engine - Stack Overflow


File "C:\dev\gae\appName\M2Crypto\__init__.py", line 22, in
ImportError: No module named __m2crypto


と、M2Crypto のインポートエラーが出ます。調べてみると、

python - importing m2crypto to google app engine - Stack Overflow
  m2crypto contains C code and won't work on GAE(C言語を含むm2cryptoはGAE上では動かない。)
 と書かれていました。

■結論
 __m2crypto.pyd はC言語で書かれた拡張モジュール(=pyd)なので、GAEでは利用できないのだと思います。
(が、参考にしたソースは「この方法でできたよ(Here's how i did it)」って書かれてるので、できるのかな~という気はしますが。。)



■余談
Pythonの基礎については以下のサイトでPDFを無料で公開されていますので、こちらも利用しています。
みんなのPython Webアプリ編 | Lindoc