मैं अपना Google अनुवाद एपीआई काम करने की कोशिश कर रहा हूं लेकिन वर्तमान में मुझे कोई रास्ता नहीं मिल रहा है। इस प्रकार मैंने Google डेवलपर कंसोल में चीजें सेट की हैं:
मैंने डीबीयूजी प्रमाणपत्रों के साथ अपना SHA1 फिंगरप्रिंट सेट किया है। और पैकेज का नाम - "bg.webmap.wordy" (जो वास्तविक नाम है)। जब मैं एक कॉल करने का प्रयास करता हूं तो JSON में "ipRefererBlocked" त्रुटि लौटा दी जाती है। लेकिन जब मैं फिंगरप्रिंट और पैकेज नाम हटा देता हूं, यह पूरी तरह से काम करता है, लेकिन फिर हर कोई इस कुंजी का उपयोग कर सकता है, इसलिए यह बहुत असुरक्षित है। तो मेरी समस्या प्रमाणीकरण के साथ है।
क्या एपीआई को कॉल करने पर मेरा ऐप स्वचालित रूप से इस फिंगरप्रिंट को भेज देगा? क्या मुझे इसे खुद भेजना चाहिए और कैसे? समस्या डीबग प्रमाणपत्र में हो सकती है?Google एंड्रॉइड SHA1 फिंगरप्रिंट और पैकेज को कैसे सत्यापित करता है?
5
A
उत्तर
1
मेरे एप्लिकेशन स्वचालित रूप से इस फिंगरप्रिंट जब एपीआई कहा जाता है भेजेंगे?
नहीं!
मैं इसे अपने आप भेजने के लिए और कैसे करना चाहिए?
हाँ!
जब android ऐप के लिए अपनी API कुंजी प्रतिबंध सेट करते समय आप पैकेज का नाम और SHA-1 प्रमाणपत्र फ़िंगरप्रिंट निर्दिष्ट। इसलिए जब आप Google को अनुरोध भेजते हैं, तो आपको इन अनुरोधों को प्रत्येक अनुरोध के शीर्षलेख में जोड़ना होगा।
कैसे?
As answered here, आप अपने कोड से अपने पैकेज का नाम और SHA प्रमाणपत्र प्राप्त करना होगा, और फिर शीर्ष लेख का अनुरोध करने के जोड़ने।
प्राप्त करें SHA प्रमाण पत्र:
/**
* Gets the SHA1 signature, hex encoded for inclusion with Google Cloud Platform API requests
*
* @param packageName Identifies the APK whose signature should be extracted.
* @return a lowercase, hex-encoded
*/
public static String getSignature(@NonNull PackageManager pm, @NonNull String packageName) {
try {
PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
if (packageInfo == null
|| packageInfo.signatures == null
|| packageInfo.signatures.length == 0
|| packageInfo.signatures[0] == null) {
return null;
}
return signatureDigest(packageInfo.signatures[0]);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}
private static String signatureDigest(Signature sig) {
byte[] signature = sig.toByteArray();
try {
MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] digest = md.digest(signature);
return BaseEncoding.base16().lowerCase().encode(digest);
} catch (NoSuchAlgorithmException e) {
return null;
}
}
अनुरोध हेडर को जोड़ना:
java.net.URL url = new URL(REQUEST_URL);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
try {
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setRequestProperty("Accept", "application/json");
// add package name to request header
String packageName = mActivity.getPackageName();
connection.setRequestProperty("X-Android-Package", packageName);
// add SHA certificate to request header
String sig = getSignature(mActivity.getPackageManager(), packageName);
connection.setRequestProperty("X-Android-Cert", sig);
connection.setRequestMethod("POST");
// ADD YOUR REQUEST BODY HERE
// ....................
} catch (Exception e) {
e.printStackTrace();
} finally {
connection.disconnect();
}
पूर्ण जवाब here देख सकते हैं।
कोडिंग का आनंद लें :)
संबंधित मुद्दे
- 1. sha1 फिंगरप्रिंट क्या है?
- 2. कीटोल एमडी 5 के बजाय SHA1 फिंगरप्रिंट उत्पन्न करता है?
- 3. Google एपीआई कॉल में SHA1 और पैकेज नाम की पुष्टि कैसे कर रहा है?
- 4. एंड्रॉइड फिंगरप्रिंट एपीआई और प्राइवेट/पब्लिक कुंजियां
- 5. पायथन में आरएसए SHA1 हस्ताक्षर कैसे सत्यापित करते हैं?
- 6. Google एपीआई और एंड्रॉइड ओथ INVALID_AUDIENCE त्रुटि
- 7. एंड्रॉइड ओ - फिंगरप्रिंट जेस्चर कॉलबैक
- 8. एंड्रॉइड की स्टोर एपीआई 23, फिंगरप्रिंट स्कैनर
- 9. डोलॉल्स पुनरावृत्ति संग्रह को नियंत्रित करता है और संपत्ति को सत्यापित करता है
- 10. MD5 और SHA1
- 11. Google एपीआई एक्सेस के लिए, क्या मैं एक ही एंड्रॉइड पैकेज नाम के लिए एकाधिक क्लाइंट आईडी बना सकता हूं?
- 12. एंड्रॉइड ऐप से प्रमाणपत्र फिंगरप्रिंट प्राप्त करें
- 13. Google Play सेवाओं और
- 14. समय उपस्थिति ऐप के लिए एंड्रॉइड फिंगरप्रिंट एपीआई
- 15. एंड्रॉइड संगतता पैकेज
- 16. Google यूएसबी पैकेज एसडीके मैनेंजर
- 17. SHA1
- 18. एंड्रॉइड संगतता पैकेज और getLoaderManager()
- 19. DEBUG के लिए SHA1 कुंजी और रिलीज एंड्रॉइड स्टूडियो मैक
- 20. बाधा पैकेज कैसे काम करता है?
- 21. डेटा के लिए फिंगरप्रिंट याद रखना आसान है?
- 22. एंड्रॉइड - डिवाइस में संग्रहीत फिंगरप्रिंट जानकारी कहां और कैसे सुरक्षित है
- 23. अमान्य SHA1 हस्ताक्षर फ़ाइल को पचाने
- 24. homebrew - बल SHA1 बेमेल
- 25. फिंगरप्रिंट स्कैनर के लिए एंड्रॉइड चेक उपलब्ध है
- 26. मैवरिक्स से एमडी 5 फिंगरप्रिंट कैसे प्राप्त करें
- 27. फिंगरप्रिंट मिलान
- 28. एंड्रॉइड जीएसएफ पैकेज क्या है?
- 29. रेपो क्या है और Google इसका उपयोग क्यों करता है?
- 30. पैकेज 'एंड्रॉइड'
क्या आपको अपने प्रश्न का उत्तर मिला है, @BabbevDan? – marcv
नहीं, मैंने इसे असुरक्षित तरीके से समाप्त कर दिया – BabbevDan