IP ไซต์หรือแอปพลิเคชันมือถือนี้ไม่ได้รับอนุญาตให้ใช้คีย์ API นี้


102

ฉันใช้https://maps.googleapis.com/maps/api/geocode/json ? เชื่อมโยงกับรหัสเซิร์ฟเวอร์และ IP ของผู้ใช้เพื่อค้นหาละติจูดและลองจิจูดของที่อยู่ใด ๆ เมื่อฉันพยายามฉันจะพบข้อผิดพลาดเป็น

ฉันมีคีย์การเข้าถึงเซิร์ฟเวอร์จาก Google และฉันได้ใส่ที่อยู่ IP ของเซิร์ฟเวอร์ไว้ในรายการสีขาว

URL ที่ฉันพยายามเข้าถึงผ่าน PHP CURL คือ:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true&key=XXXXXXXXXXXX

ผลลัพธ์ที่ฉันได้รับ:

Array ([error_message] => This IP, site or mobile application is not authorized to use this API key. [results] => Array ( ) [status] => REQUEST_DENIED)

มีอะไรที่ฉันต้องกำหนดค่า geocoding API ก็เปิดอยู่ด้วย


คุณต้องได้รับรหัสที่ได้รับอนุญาตจาก google และใส่ลงใน api
Dimag Kharab

มีคีย์ API อยู่แล้ว
sanket

ตรวจสอบคำตอบโดย Mike มันใช้ได้กับฉัน
Sheraz Ahmad Khilji

ยอมรับคำตอบของ mike20132013! มันได้ผล!
aveschini

มีเอกสารอย่างเป็นทางการสำหรับปัญหานี้: chromium.org/Home/chromium-security/…
Gopal00005

คำตอบ:


150

ฉันมีปัญหาเดียวกันและพบสิ่งนี้

ใน url ต้องใช้คีย์เซิร์ฟเวอร์ในท้ายที่สุดไม่ใช่คีย์ api สำหรับแอป

โดยพื้นฐานแล้วคุณเพียงแค่เพิ่มรหัสเซิร์ฟเวอร์ที่ส่วนท้ายของ URL ดังนี้:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&sensor=true&key=SERVERKEY

ตอนนี้เพื่อรับคีย์เซิร์ฟเวอร์เพียงทำตามขั้นตอนเหล่านี้:

1)ไปที่ Developer Console https://code.google.com/apis/console/

2)ในข้อมูลรับรองภายใต้การเข้าถึง API สาธารณะสร้างคีย์ใหม่

3)เลือกคีย์เซิร์ฟเวอร์จากตัวเลือก

4)ป้อนที่อยู่ IP ของคุณในฟิลด์และหากคุณมีที่อยู่ IP เพิ่มเติมคุณสามารถเพิ่มได้ทุกบรรทัด หมายเหตุ:ป้อนที่อยู่ IP เฉพาะเมื่อคุณต้องการใช้เพื่อการทดสอบของคุณ ปล่อยให้ส่วนที่อยู่ IP ว่างไว้

5)เมื่อคุณทำเสร็จแล้วให้คลิกสร้างและรหัสเซิร์ฟเวอร์ใหม่ของคุณจะถูกสร้างขึ้นจากนั้นคุณสามารถเพิ่มรหัสเซิร์ฟเวอร์นั้นใน URL ของคุณได้

ประการสุดท้ายคือแทนที่จะวางเซ็นเซอร์ = true ไว้ตรงกลาง URL คุณสามารถเพิ่มเข้าไปในตอนท้ายดังนี้:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&key=SERVERKEY&sensor=true

Places APIนี้แน่นอนจะแก้ปัญหาและก็อย่าลืมใช้คีย์เซิร์ฟเวอร์สำหรับ

แก้ไข

ฉันเชื่อว่า URL ของเว็บมีการเปลี่ยนแปลงในช่วงหลายปีที่ผ่านมา คุณสามารถเข้าถึงคอนโซลนักพัฒนาได้จากที่นี่ - https://console.developers.google.com/apis/dashboard

  • ไปที่คอนโซลนักพัฒนา - https://console.developers.google.com/หรือใช้ลิงก์จากรายละเอียดเพื่อไปที่แดชบอร์ด API โดยตรง
  • ภายใต้คอนโซลนักพัฒนาให้ค้นหาป้ายกำกับจากแผงนำทางด้านซ้าย
  • เลือกโครงการ
  • เลือกข้อมูลรับรองจากแผงการนำทางด้านซ้าย
  • คุณสามารถสร้างประเภทข้อมูลรับรองจากแถบนำทางด้านบนได้ตามต้องการ

หวังว่าคำตอบนี้จะช่วยคุณและผู้ชมคนอื่น ๆ โชคดี .. :)


8
สำคัญมาก 4) ป้อนที่อยู่ IP ของคุณในฟิลด์และหากคุณมีที่อยู่ IP เพิ่มเติมคุณสามารถเพิ่มได้ทุกบรรทัดหมายเหตุ: ป้อนที่อยู่ IP เฉพาะเมื่อคุณต้องการใช้เพื่อการทดสอบของคุณ ปล่อยให้ส่วนที่อยู่ IP ว่างไว้
Sheraz Ahmad Khilji

6
ถูกต้อง .. ระบุเฉพาะที่อยู่ IP / ที่อยู่เพื่อการทดสอบเท่านั้น มิฉะนั้นเว้นว่างไว้ เนื่องจากคุณกำลัง จำกัด แอพหรือคีย์ api ให้ทำงานเฉพาะบนอุปกรณ์ / แอพที่ระบุเท่านั้น
mike20132013

1
@johnshumon ใช่ฉันเดา .. ยังไม่ได้อัปเดตคำตอบสำหรับทุกวัย อาจมีการเปลี่ยนแปลง API ใหม่ ๆ
mike20132013

1
อาจต้องการตรวจสอบให้แน่ใจว่า Google Places API Web Service เป็น API ที่เปิดใช้งานเช่นกัน
Justin Wilson

1
ต่อสู้กับสิ่งนี้เป็นเวลาหลายชั่วโมงก่อนที่จะพบว่า "โครงการ" ใหม่ต้องเชื่อมโยงกับบัญชีการเรียกเก็บเงินระบบคลาวด์ของ Google เพื่อให้ Google API หยุดให้ข้อผิดพลาดทั่วไปต่างๆเหล่านี้ สามารถกำหนดเกณฑ์เป็น $ 0 ดังนั้นคุณจะไม่ถูกเรียกเก็บเงินหากการใช้งานเกินโควต้าที่อนุญาต
Sparky

17
  1. เลือกคีย์
  2. แท็บข้อ จำกัด API
  3. เลือกคีย์ API
  4. บันทึก
  5. เลือกข้อ จำกัด ของแอปพลิเคชัน -> ไม่มี
  6. บันทึก

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


ฉันมีบริการบางอย่างที่ระบุไว้ในข้อ จำกัด ของ API แต่ไม่มีการระบุพิกัดทางภูมิศาสตร์
Muhammad Umer

ทำงานเหมือนมีเสน่ห์ ขอบคุณกำลังพยายาม geocoding ฉันตั้งค่าข้อ จำกัด ของแอพเป็นไม่มีตามที่คุณระบุและมันใช้งานได้
ราวี

4
ข้อ จำกัด : ไม่มีเลยค่อนข้างอันตราย
Deniss M.

9
การปิดใช้งานความปลอดภัยไม่ใช่วิธีแก้ปัญหา!
Bartholomej

อย่าทิ้งคีย์ API โดยไม่ได้ระบุ! ตอนนี้ "โครงการ" ใหม่ต้องเชื่อมโยงกับบัญชีสำหรับการเรียกเก็บเงินเพื่อให้ Google API หยุดให้ข้อผิดพลาดทั่วไปต่างๆเหล่านี้ สามารถกำหนดเกณฑ์เป็น $ 0 ดังนั้นคุณจะไม่ถูกเรียกเก็บเงินหากการใช้งานเกินโควต้าที่อนุญาต
Sparky

14

นอกจากคีย์ API ที่กำหนดให้คุณแล้ว Google ยังตรวจสอบแหล่งที่มาของคำขอที่เข้ามาโดยดูจากที่อยู่REFERRERหรือที่อยู่ IP เมื่อต้องการเรียกใช้เช่นในขดที่สร้างใหม่Server KeyในGoogle APIs คอนโซล ในขณะที่สร้างคุณต้องระบุที่อยู่ IP ของเซิร์ฟเวอร์ ในกรณีนี้ก็จะเป็นของคุณอยู่ในท้องถิ่น เมื่อคุณสร้างServer Keyที่อยู่ IP ของคุณและอนุญาตพิเศษแล้วคุณจะสามารถใช้คีย์ API ใหม่ใน curl ได้

ฉันเดาว่าคุณอาจสร้างคีย์ API ของคุณBrowser Keyซึ่งไม่จำเป็นต้องให้คุณกำหนดที่อยู่ IP ของคุณเป็นพิเศษ แต่ใช้REFERRERแท็กส่วนหัว HTTP ในการตรวจสอบความถูกต้องแทน curl จะไม่ส่งแท็กนี้โดยค่าเริ่มต้น Google จึงไม่สามารถตรวจสอบคำขอของคุณได้


1+ จะต้องสร้างคีย์ API ของเซิร์ฟเวอร์เพื่อใช้บริการ Geocode ของ Google ยังต้องเปิดใช้บริการ geocodding แผนที่ของ Google จากคอนโซล API ของ Google ด้วย .. ขอบคุณ !!
Sumit Munot

ต่อสู้กับสิ่งนี้เป็นเวลาหลายชั่วโมงก่อนที่จะพบว่า "โครงการ" ใหม่ต้องเชื่อมโยงกับบัญชีการเรียกเก็บเงินระบบคลาวด์ของ Google เพื่อให้ Google API หยุดให้ข้อผิดพลาดทั่วไปต่างๆเหล่านี้ สามารถกำหนดเกณฑ์เป็น $ 0 ดังนั้นคุณจะไม่ถูกเรียกเก็บเงินหากการใช้งานเกินโควต้าที่อนุญาต
Sparky

6

ขณะนี้ Google Places API ไม่รองรับคีย์ Android หรือ iOS ที่สร้างจากคอนโซล Google APIs ปัจจุบันรองรับเฉพาะคีย์เซิร์ฟเวอร์และเบราว์เซอร์เท่านั้น


1
น่าสนใจ ... แล้วเราจะสร้างคีย์สำหรับใช้ในแอพ Android หรือ iOS ได้อย่างไร?
Graham Perks

คีย์เบราว์เซอร์ของคุณจะใช้งานได้ใน Android และ iOS รับคีย์เบราว์เซอร์ในคอนโซล Google APIs
Nazrul Islam

พวกเขาไม่ได้โดยไม่ต้องใช้ความพยายามพิเศษ ฉันเพิ่งคิดออกหลังจากวันที่น่าผิดหวังเมื่อวานนี้ มีขั้นตอนเพิ่มเติมสำหรับแอป: stackoverflow.com/a/58136437/434004
Graham Perks

3

คุณกำลังพยายามใช้คีย์ API ซึ่งคุณ จำกัด ในลักษณะที่ไม่อนุญาตให้ดำเนินการนี้

อ้างอิงจาก Google:

Note: If you need to call web, web service, and/or mobile APIs from the same (client-side) app, create and restrict multiple keys.

ดังนั้นสิ่งที่ควรทำคือสร้างคีย์ API อื่นและเลือกข้อ จำกัด ที่ถูกต้องสำหรับเรื่องนี้ ในกรณีของคุณให้เลือก "ที่อยู่ IP" (ภายใต้ "ข้อ จำกัด ของแอปพลิเคชัน") และใช้ "เพิ่มรายการ" เพื่อเพิ่ม IP ของเซิร์ฟเวอร์ของคุณ โปรดสังเกตว่าการปล่อยรายการว่างไว้จะใช้ไม่ได้และจะส่งผลให้ Google เปลี่ยนข้อ จำกัด ของคุณเป็น "ไม่มี"

นอกจากนี้อย่าลืมเพิ่ม API ที่เกี่ยวข้องภายใต้ "ข้อ จำกัด API" (ในกรณีของคุณคือ "Geocoding API")

สิ่งสุดท้ายคือ Google บล็อกการใช้ API นี้จนกว่าคุณจะเชื่อมโยงแอปของคุณกับบัญชีการเรียกเก็บเงิน Google Cloud ดังนั้นหากคุณยังไม่ได้ทำเมื่อคุณได้รับคำตอบสำเร็จระบบจะบอกว่าคุณต้องทำก่อน (มีแพ็คเกจเริ่มต้นฟรี)


2

คุณสร้างคีย์โดยไม่ต้องอ้างถึงอย่าป้อนที่อยู่ผู้อ้างอิง


คุณช่วยอธิบายให้ละเอียดได้ไหม
Sagar Devanga

2
ในขณะที่สร้างคีย์ที่คุณมีเพื่อเพิ่มที่อยู่ผู้อ้างอิงโปรดตรวจสอบว่าคุณได้เพิ่มบางสิ่งที่นั่นแล้ว ถ้าเพิ่มเคลียร์
DeadlyDroid

2

Google Place API ต้องการให้รวมส่วนหัว HTTP อ้างอิงเมื่อทำการเรียก API

รวมส่วนหัว HTTP "Referer: yourdomain.com" และควรแก้ไขปัญหาการตอบกลับ


1
แม้ว่าสิ่งนี้อาจตอบคำถามได้คุณควรใส่ข้อความในคำตอบเพื่ออธิบายสิ่งที่คุณกำลังทำอยู่ อ่านวิธีการเขียนคำตอบที่ดี นอกจากนี้คุณควรใส่รหัสบางส่วน
Jørgen R

คุณช่วยกรุณาให้ตัวอย่าง
Sagar Devanga

นี่คือสิ่งที่ฉันทำและมันทำงานได้อย่างสมบูรณ์: var options = {url: url, headers: {Referer: ' xxx.herokuapp.com '}}; request.get (ตัวเลือกฟังก์ชัน (...
Florida G.

1

นอกจากนี้ควรเปิดใช้ API ที่เกี่ยวข้องสำหรับโครงการที่กำหนด

https://console.developers.google.com/apis/library?project=projectname ที่นี่


ฉันเพิ่มชื่อโปรเจ็กต์ของฉันตามที่คุณชี้ไว้ แต่มันใช้งานไม่ได้
Ramis

1

สำหรับเวอร์ชันล่าสุดของ API ดูเหมือนว่าตรงกันข้ามกับฉัน

เมื่อเรียก URL https://maps.googleapis.com/maps/api/geocode/json?address=<address>&key=<key>ฉันได้รับข้อผิดพลาดต่อไปนี้

คุณต้องใช้คีย์ API เพื่อตรวจสอบสิทธิ์แต่ละคำขอไปยัง Google Maps Platform API สำหรับข้อมูลเพิ่มเติมโปรดดูที่http://g.co/dev/maps-no-account

เมื่อฉันเปลี่ยนคำสั่งเป็น https://maps.googleapis.com/maps/api/geocode/json?key=<key>&address=<address>แล้วมันก็ใช้งานได้ดี

โปรดทราบว่าข้อความแสดงข้อผิดพลาดที่ได้รับข้างต้นเป็นข้อความที่ฉันได้รับเมื่อไปที่ URL ในเบราว์เซอร์โดยตรง เมื่อฉันเรียก API จากโปรแกรมซอฟต์แวร์ฉันได้รับการตอบกลับ HTML พร้อมข้อความต่อไปนี้:

ขออภัย ... แต่คอมพิวเตอร์หรือเครือข่ายของคุณอาจส่งข้อความค้นหาอัตโนมัติ เพื่อปกป้องผู้ใช้ของเราเราไม่สามารถดำเนินการตามคำขอของคุณได้ในขณะนี้


ต่อสู้กับสิ่งนี้เป็นเวลาหลายชั่วโมงก่อนที่จะพบว่า "โครงการ" ใหม่ต้องเชื่อมโยงกับบัญชีการเรียกเก็บเงินระบบคลาวด์ของ Google เพื่อให้ Google API หยุดให้ข้อผิดพลาดทั่วไปต่างๆเหล่านี้ สามารถกำหนดเกณฑ์เป็น $ 0 ดังนั้นคุณจะไม่ถูกเรียกเก็บเงินหากการใช้งานเกินโควต้าที่อนุญาต
Sparky


0

การพิสูจน์ตัวตนโควต้าราคาและนโยบายการ พิสูจน์ตัวตนในการใช้ Directions API คุณต้องเปิดใช้งาน API ก่อนและขอรับข้อมูลรับรองการตรวจสอบสิทธิ์ สำหรับข้อมูลเพิ่มเติมโปรดดูเริ่มต้นใช้งาน Google Maps Platform

โควต้าและราคาตรวจสอบการใช้งานและหน้าการเรียกเก็บเงินสำหรับรายละเอียดเกี่ยวกับโควต้าและราคาที่กำหนดสำหรับ Directions API

นโยบายการใช้ API เส้นทางต้องเป็นไปตามนโยบาย API

ข้อมูลเพิ่มเติม: ไปที่: - https://developers.google.com/maps/documentation/directions/start?hl=th


-2
  url = https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving&key=AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY

เพิ่มเฉพาะใน AppDelegate เช่น

            GMSServices.provideAPIKey("AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY")

และลบคีย์ใน url นี้

ตอนนี้ url คือ

https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving

-3

ปิดใช้งาน API ทิศทางและ geocoding api และเปิดใช้งานอีกครั้ง

ใช้งานได้เพียง 5-10 วินาทีและกว่าจะปิดใช้งานโดยอัตโนมัติ

หมายความว่าคุณมีเวลาเพียง 5-10 วินาทีในการทดสอบงานของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.