2015-12-29 15 views
5

私のSHA-1指紋で署名されたAndroidアプリケーションにAndroid APIキー(Google Maps Direction API用)の使用を制限しようとしています。 Google Developers Consoleの資格情報に「パッケージ名と指紋を追加しない」と表示されても、このキーは問題なく機能します。しかし、私がそれらを追加すると、このエラーが発生します:このIP、サイト、またはモバイルアプリケーションには、このAPIキーを使用する権限がありません。

W/System.err:com.google.maps.errors.RequestDeniedException:このIP、サイト、またはモバイルアプリケーションはこのAPIキーを使用する権限がありません。 IPアドレスXX.XX.XXX.XXXから受信したリクエストが空の参照者

このエラーを解決するために提供される回答の大部分は、Places APIのためのもので、Server APIキーに切り替えることで解決します。私はAndroidキーを使用する必要があり、そのキーのユーザーを制限したい。

注意点:1)Googleが認識しているのは、有効なAPIキーを使用しています。 2)Googleは正しいSHA-1署名を認識しますが、無効なAPIキーを使用するとGoogleは署名に誤りを表示します。

ご協力いただければ幸いです。

答えて

11

あなたが見つけたとおり、保護されていない限り、すべてのAPIキーがここで動作しますが、安全なAndroid APIキーはGoogle Maps Directions APIでは機能しません。

Directions API(または任意のWebサービスAPI)にServer APIキーを使用する必要があります。 the documentation:から

Googleマップ行き方APIはサーバーのキーで動作します。

これは、これらのWebサービスAPIがもともとAndroidアプリではなくウェブサイトで使用されていたためです。

さらに、サーバーキーを保護する唯一の方法はIPアドレスであるため、クライアント側で行う方法はありません。

Googleの公式の推奨事項は、アプリがリクエストするプロキシサーバーを使用し、プロキシサーバーからDirections APIリクエストを行うことです。

(これは場所WebサービスAPIに固有のものですが、それはWebサービスのAPIのいずれにも有効です)ここを参照してください:Googleの従業員からhttps://groups.google.com/forum/#!topic/google-places-api/SmujrL-pDpU

応答:

アレクセイ、

何か格納されているクライアント側は難読化されていても、 専用ハッカーがアクセスするには少し遅くなります。 にアクセスしてください。

、私は、あなたがリクエストを受信するプロキシサーバへのAPIキーなしであなたの場所 要求を送信するようにアプリケーションを設定することをお勧め が要求の最後にAPIキーを追加し、要求を送信し、 リクエストからの応答を受信し、 アプリケーションに返します。

乾杯、

クリス

+2

は、あなたの答えをいただき、ありがとうございます。私はまだGoogleがセキュリティを持たない鍵よりも安全なAPI鍵を使用させないと信じるのは難しいと思うが、 – BrianMiz

関連する問題