私のskdを使いたい開発者またはクライアントは、APP_KEYを申請するために自分のウェブサイトにアクセスする必要があります。APP_KEYを申請するには、アプリのパッケージ名を提供する必要があります。この "com.edward.myapp" 開発者の証明書のSHA-1(keytoolから生成)。 今、APP_KEYを私のサーバーに送信してAPP_KEYを確認できますが、APP_KEYが有効または無効であることがわかっているのは唯一のことです。クライアントのアプリか他のユーザーのアプリかわかりませんそれはどんなパッケージ名でもかまいません。私はこれが起こるようなことをしたくありません。 これを確認してsdkを使用するのが適切なアプリであることを確認するにはどうすればよいですか?私はクライアントがAPP_KEYを申請するクライアントだけが自分のSDKを使用できるようにするために、クライアントのためにアンドロイドSDKを開発したいと考えていますか?
-1
A
答えて
0
実行時のSDKは、APKの署名に使用された証明書のSHA1を取得できます。
String getSignatureSha1(Context context) {
PackageManager pm = context.getPackageManager();
PackageInfo info = null;
try {
info = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
} catch (NameNotFoundException e) {
Log.e(TAG, "Could not find info for " + context.getPackageName());
return null;
}
byte[] signatureBytes = info.signatures[0].toByteArray();
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signatureBytes);
byte[] digestBytes = md.digest();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < digestBytes.length; i++) {
// you can omit this if block if you don't care about the colon separators
if (i > 0) {
builder.append(':');
}
builder.append(String.format("%02X", digestBytes[i] & 0xFF));
}
return builder.toString();
}
これは、アプリケーションの起動時に一度実行し、複数回必要な場合は結果をキャッシュする必要があります。
+0
ありがとう、助けて! –
関連する問題
- 1. クライアント側が私のために働いていない
- 2. 私は、クライアント側でサーバー通信にWebソケットを使用したいと考えています。
- 3. 他のクライアントを見つけるためのP2P(分散コンピューティングプロジェクト用)
- 4. SDK-2 +(Froyo/Ginderbread)で開発するためにADT 17を使用することができます
- 5. steamworks C++ sdk。クライアントはすでにシングルプロファイルからゲームを開始しています。
- 6. aio_write私はシンプルなクライアント・サーバprogram.Myクライアントプログラムを書くためにAIOを使用することを始めています、私の単純なクライアント/サーバproggram
- 7. インディFTPクライアントが別のアップロードを開始しようとしたときにエラーが発生しましたか?
- 8. Magentoのは - これは私がクライアントのためにMagentoのウェブショップを開発するリンクですwierdly
- 9. テスト目的のためにクライアントにアンドロイドAPKを与えるには?
- 10. ユーザーが自分のサイトにメッセージを残すために使用できるオープンソースライブラリを教えてください。
- 11. svnserveサーバを設定した後、クライアントがサーバにアクセスするために使用するURLは何ですか?
- 12. window.requestFileSystemは、私はアンドロイドのためのHTML5アプリケーションを開発するためのPhoneGapを使用している9
- 13. 保存Webクライアントを使用するために自分のコードを編集したファイル
- 14. クライアントがwcfでコールバックのために生きているかどうかを検出する方法は?
- 15. WCFサービス - クライアントだけが使用できるように保護する方法
- 16. スクライブを使用したJava Twitterクライアント(初めて使用しています)。ステータスを投稿するには?
- 17. 参照先クライアントを見つけるための自己結合
- 18. WCFクライアントのメリットは、Webservices 2.0クライアントをまったく同じように使用できる場合です。
- 19. 私はICQとYahooクライアントを開発するためのJava APIが必要です
- 20. アンドロイド開発のためのeclipse用のMacでのsvnクライアントの設定
- 21. アンドロイドからGoogleクライアントAPIを使用するためのEclipseのアノテーション - @Key
- 22. SilverlightがサポートするWCFバインディングとは何ですか?私は自分のアプリケーションを開発するためにはシルバーライトを使用しています
- 23. 検証されたクライアントだけが読むことができるようにデータを保護する
- 24. ラウンドトリップなしでサーバーから同じサーバーにクライアントをコピーしますか?クライアントは、サーバーがクライアントからファイルをトリップラウンドすることなく、同じサーバー上の別の場所にサーバーのファイルをコピーするために取得するために
- 25. アンドロイドのためのシンプルなクライアント/サーバーアプリケーション
- 26. 自分のCAがApacheで発行したクライアント証明書
- 27. 開発者が自由に拡張できるオープンソースのSIPクライアント(またはライブラリ)は何ですか?
- 28. 確保JavaScriptは、私は、クライアントが自分のサーバーに送信しているかを見るために得ることは決してないことを保証するために、データのいくつかのクライアント側の暗号化を行うWebアプリケーションを書いている
- 29. iOSのサウンドエフェクトユニットを開発するためにCore Audio SDKを使用できますか?
- 30. POP3クライアントの開発にはどのようなRFCを考慮する必要がありますか?
問題を解決するためのあらゆる努力? – manetsus
私はアンドロイドの生のフォルダに自分の証明書を保存しようとしましたが、次にこのようなパッケージ名を取得します:this.mPacName = mContext.getPackageName();証明書のSHA-1を計算しようとしました。最後に、上記で計算したSHA-1とパッケージ名を使用して値を生成し、この値をマニフェストファイルに格納されているAPP_KEYと比較します。彼のアプリと私のSDKを使用します。 –