我有一个功能来检索Google方向,但我有一个问题,即在哪里可以找到Google加密密钥来签署我的网址。仪表板上的这个位置在哪里?
public static void getDirections(Context context, String origin, String destination,
final DirectionsListener listener)
throws ExecutionException, InterruptedException {
if (FrameworkUtils.isStringEmpty(origin) || FrameworkUtils.isStringEmpty(destination)) {
return;
}
try {
String url = String.format(GOOGLE_API_DIRECTIONS_URL, origin, destination,
ConfigurationManager.GOOGLE_CLIENT_KEY, KEY_TRAVEL_MODE_DRIVING);
String signedUrl = UrlSigner.signURL(url);
JsonRequest request = new JsonRequest(Method.GET, signedUrl, null, new JsonResponseListener() {
@Override
public void onResponse(JSONObject response, int resultCode) {
try {
JSONArray routesObject = response.getJSONArray(KEY_ROUTES);
JSONObject currentRoute = routesObject.getJSONObject(0);
JSONObject overViewPolyline = currentRoute.getJSONObject(KEY_OVERVIEW_POLYLINE);
String encodedPoints = overViewPolyline.getString(KEY_POINTS);
listener.onSuccess(decode(encodedPoints));
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onResponse(JSONObject jsonObject) {
// do nothing
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
// do nothing
}
@Override
public void onErrorResponse(VolleyError error, int resultCode) {
// do nothing
}
}, 45);
VolleyClient.getInstance(context.getApplicationContext()).addRequest(request);
} catch (IOException | InvalidKeyException | NoSuchAlgorithmException | URISyntaxException e) {
e.printStackTrace();
}
}
这是我的signURL功能
public static String signURL(String inputUrl) throws IOException, InvalidKeyException, NoSuchAlgorithmException, URISyntaxException {
URL url = new URL(inputUrl);
String googleCryptoKey = ConfigurationManager.GOOGLE_CRYPTO_KEY;
UrlSigner signer = new UrlSigner(googleCryptoKey);
String request = signer.signRequest(url.getPath(), url.getQuery());
return url.getProtocol() + "://" + url.getHost() + request;
}
我是从示例中创建此代码的,但我无法确定Google加密密钥应该是什么?
仪表板有
有人可以帮忙吗?
答案 0 :(得分:1)
客户端ID和加密密钥用于Premium计划许可证。如果您没有Premium计划许可并使用标准计划,则必须在请求中应用API密钥,并且不需要数字签名。
https://developers.google.com/maps/documentation/directions/get-api-key#standard-auth
因此,您可以简化代码以应用API密钥而不是客户端ID,并删除创建数字签名的部分。
如果您想保护API密钥,则应在开发者控制台中设置IP限制。客户端ID和数字签名用于保护Premium计划用户发出的请求。