4311
Kickstarter支援者に、特別アイテムをプレゼントしたいのですが

Androidアプリ、(Unity3d制作)で  
サーバーを立ててユーザー認証をする方法ではなく、  
アプリ単体でどの支援者か判別する方法はあるでしょうか？

支援者に特別アイテム用のパスワードをメールで送る  
などは考えたのですが、  
それだとパスワードをTwitterなどでつぶやかれたり、  
攻略サイトに張られたりなどされる可能性もあり  
スマートな方法ではないと考えます。

サーバー立てないのは、単に僕がサーバー触ったことないだけなので  
他に方法がなければそのままパスワード制にするか  
この機会にサーバーの勉強を始めようかと思うのですが。
CC BY-SA 3.0
2015-01-08T19:37:28.267
4308
2015-01-09T09:16:13.667
2015-01-09T02:49:38.853
4978
7252
question
android unity3d
Kickstarter支援者向けに、サーバーを使わずアプリの限定アイテムを配布することは可能でしょうか？
サーバーを使わない -> アプリ内に配布したいアイテム情報がある -> 逆アセンブルをすれば（時間が多少かかるかもですが）その情報は見つかる

となるので、サーバーで何らかの認証の仕組みが必要になると思います。

最近は自分でサーバーを構築せずに使えるサービス（MBaaS）があるので、それを利用するのがてっとり早い気がします。

<http://jp-cloud.kii.com/>  
<http://www.appiaries.com/jp/baas/>  
<http://mb.cloud.nifty.com/about.htm>
CC BY-SA 3.0
2015-01-08T23:02:04.077
4311
2015-01-08T23:02:04.077
845
4308
answer
あらかじめ必要になったキーを全て製品に埋め込んで、漏えいしたものはアップデートを通してブラックリスト化するという手がありますが、漏れるとすれば、解析を通して全てのキーが漏れていき、大変でしょうね。他に思いつく方法に以下があります。

  * 支援者向けのプライベートなWebページで毎回のアップデート毎に変わるキーを配布し続ける
  * 支援者向けの別のビルドが入手できる配布ページを設ける

どちらも、手間がかかるのには変わりなさそうです。

支援者らは、ビジネスライクな対応を求めておられないでしょうから、支援者がそれほど多くない場合は、情報を伝達するプライベートページは Google Doc
等のオンラインサービスを使用してもいいかもしれません。

**補足:**

Kickstarter
サイトには、支援者を判別できるような公開APIがありませんが、内製アプリ向けの[プライベートAPI](https://api.kickstarter.com)が存在し、それを利用した[クライアントライブラリ](https://github.com/wolfbyte/Kickstarter.Api)を
[NuGet
で利用可能](https://www.nuget.org/packages/Kickstarter.Api/1.0.0)です。ただし、これは非公式なものであり、いつAPIが変更されるかわかりません。

参考: [Let's Explore Kickstarter's API](http://syntaxi.net/2013/03/24/let-s-
explore-kickstarter-s-api/)
CC BY-SA 3.0
2015-01-09T02:47:46.693
4318
2015-01-09T02:47:46.693
4978
4308
answer
どちらも使った事が無いので、Unity3dでどこまで作り込み可能か判りません  
ですので認証の手法だけですが…

> 支援者に特別アイテム用のパスワードをメールで送る

この部分からユーザーのメールアドレスが判明していると仮定するのであれば  
メールの認証を利用して本人確認する手段が有ります。

1．支援者にメールでアプリに入力するコードを配信

・コード内容は秘密鍵で暗号化して以下のものを送る  
個別の支援者のメールアドレス  
特典アイテムを特定するためのコードや/認証等

2．アプリに送られたコードを入力

・アプリ側で以下の処理を行う  
受け取ったコードを公開鍵で復号化  
アプリ固有のパスを新規に生成・保存(このパスは他の端末では使用不可能)  
復号化したメールアドレス宛にアプリ固有のパスをアプリ内から直接送信  
(送信に端末内のメーラーは使わない事)

3．受信したメール記載のパスがアプリ内保持のパスと一致するかで認証

サーバーを建てられるなら2の後半に追加の認証処理(暗号/復号化等)と  
サーバー側で保持したアドレスにメール送信をする事でコードの短縮化や  
セキュリティの向上も見込めますね。
CC BY-SA 3.0
2015-01-09T09:16:13.667
4335
2015-01-09T09:16:13.667
5479
4308
answer