我的Android应用程序需要使用Google Place Search API,但由于它不适用于Android,我必须调用Web API。我考虑过使用云功能,但这太贵了,如果在每个客户端本地完成,可以做得少很多。问题是将API密钥存储在用户的设备上,因为它可以轻松检索。因此,如果我将密钥存储在RT DB上并仅在需要时引用它是否安全?
另外,如果你有建议,我很乐意实施它们:D
答案 0 :(得分:1)
将密钥存储在数据库中仍然需要用户可以访问它。因此,虽然检索的工作量要多一点,但恶意用户仍然可以检索它。
服务器端密钥不应该在客户端代码中使用。
答案 1 :(得分:0)
Google Places API适用于Android。
示例代码
public void findPlace(View view) {
try {
Intent intent =
new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
.setFilter(typeFilter)
.build(this);
startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException e) {
// TODO: Handle the error.
} catch (GooglePlayServicesNotAvailableException e) {
// TODO: Handle the error.
}
}
// A place has been received; use requestCode to track the request.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Place place = PlaceAutocomplete.getPlace(this, data);
Log.i(TAG, "Place: " + place.getName());
} else if (resultCode == PlaceAutocomplete.RESULT_ERROR) {
Status status = PlaceAutocomplete.getStatus(this, data);
// TODO: Handle the error.
Log.i(TAG, status.getStatusMessage());
} else if (resultCode == RESULT_CANCELED) {
// The user canceled the operation.
}
}
}
完整教程here。