Thiếu api_key / khóa hiện tại với Google Services 3.0.0


157

Vì tôi đã nâng cấp dự án với phiên bản mới nhất của dịch vụ và thư viện google (9.0.0), tôi gặp vấn đề kỳ lạ này:

Lỗi xây dựng

Bảng điều khiển lớp:

:app:processDebugGoogleServices
Parsing json file: /Users/cyrilmorales/Documents/Projects/mobilemeans-punainenristi/app/google-services.json
:app:processDebugGoogleServices FAILED
Error:Execution failed for task ':app:processDebugGoogleServices'.
> Missing api_key/current_key object
Information:BUILD FAILED

build.gradle (root):

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-alpha1'
    classpath 'com.google.gms:google-services:3.0.0'
}

build.gradle (ứng dụng):

dependencies {
    ....
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    ...
}
apply plugin: 'com.google.gms.google-services'

Tuy nhiên, nó hoạt động tốt với các thư viện dịch vụ chơi trong 8.4.0 và google-services 2.1.0

Bạn có bất cứ ý tưởng về giải pháp?


Tôi đang sử dụng bản đồ và tôi có api_key được xác định trong tệp AndroidManifest.xml. Bạn đã có api_key ở đó? Một cái gì đó như thế <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański

Vâng tôi có nó. Manifest được cấu hình tốt, nó luôn hoạt động .. cho đến bây giờ.
palmsnipe

Câu trả lời:


162

Tạo tệp cấu hình mới (google-services.json) từ: https://developers.google.com/cloud-messaging/android/client#get-config

Tập tin cấu hình mới với "api_key": [ { "current_key": XXX } ]trong phần máy khách

Cập nhật: hoặc dịch vụ kích hoạt thủ công trong bảng điều khiển dành cho nhà phát triển và tạo khóa.


1
Mới có trong tập tin conf "api_key": [{"current_key": XXX}]
Jozka Jozin

1
Nên sử dụng khóa API nào?
Marco Zanetti

8
Bạn phải bật Cloud Messaging ngay cả khi bạn không sử dụng nó và tạo tệp json mới. Khi bạn bật Cloud Messaging, bạn nhận được khóa API cần nó cho nó.
Rafael Gutiérrez

2
Tôi đã nhận được khóa API trong tệp JSON bằng cách bật API nhắn tin đám mây "api_key": [{"current_key": "the_api_key"}], nhưng vẫn không hoạt động. Tôi thực sự không biết điều gì sai với nó. : - /
Marco Zanetti

7
Ai biết api_key này để làm gì? Nó hoạt động tốt mà không cần nó trước khi ...
Pavel Biryukov

89

Thêm giá trị khóa hiện tại trống trong tệp google-services.json đã giải quyết vấn đề này cho tôi

"api_key": [{ "current_key": "" }]


1
Chỉ cần nghĩ rằng tôi đã thêm rằng giá trị "api_key" nằm trong giá trị "khách hàng"
ngày

2
@Ajax -the Max: Điều này cũng làm việc với tôi. Bạn có thể tử tế để giải thích tại sao điều này làm việc?
Pineda

1
đây có vẻ là giải pháp tốt nhất nếu sử dụng tin nhắn đám mây GMS cũ. Tệp cấu hình mới không bao gồm khóa GMS thay vào đó thêm Firebase.
GordonW

34

Có, như lần đầu tiên sử dụng với Firebase, tôi phải đối mặt như vậy. Nhấp vào menu ứng dụng của bạn và nhấp vào "Quản lý".

nhập mô tả hình ảnh ở đây

bạn có thể tải xuống google-services.json một lần nữa.

nhập mô tả hình ảnh ở đây


2
vâng tôi đã tải xuống một lần nữa và nó là tập tin lớn hơn vào lần tới và điều này đã khắc phục vấn đề cho tôi
HHR Badawi

1
Tôi có thể xác nhận: Tôi đã đăng ký Firebase Analytics và nó tự động tải xuống google-services.json không chứa khóa API. Sau đó, tôi đã tải xuống thủ công như thế này và khóa API nằm trong json.
chichilatte

URL để truy cập bảng điều khiển này là gì?
Sean Beach

9

Đối với tất cả mọi người có vấn đề này, hiện tại, bạn sẽ cần thêm bất kỳ dịch vụ nào vào ứng dụng của mình tại https://developers.google.com/cloud-messaging/android/client#get-config

Trong trường hợp của tôi, tôi đã thêm admob (đã có phân tích và gcm) và sau đó tệp được tạo bằng api_key.

Tôi nghĩ đó là một lỗi và sẽ sớm được sửa chữa, cho đến khi đó, hãy làm điều đó.


thực sự có một lỗi ... tôi cũng phải thêm lời mời ứng dụng để có được json mới
Jivraj S Shekhaw

xin chào, tôi đã thêm cấu hình mới, nhưng IDE vẫn phàn nàn rằng nó thiếu api_key

Trước khi mở IDE, bạn có thể kiểm tra tệp cấu hình để đảm bảo có s 'api_key' value. Clearly therelỗi, vì vậy chúng tôi cần thử các cách tiếp cận khác nhau để giải quyết vấn đề.
Elvis Oliveira

điều đó có nghĩa là, mỗi khi tôi thêm một phụ thuộc mới vào tệp lớp của mình, tôi phải tải xuống một google-services.json mới vì nó tạo ra một api_key mới?
Ashok Bijoy Debnath

8

Mặc dù Jozka Jozin chấp nhận câu trả lời và nhận xét của mình, Cloud Messaging không liên quan cũng không bắt buộc.

Tuy nhiên, tái tạo google-services.jsonlà chìa khóa để giải pháp (vì vậy tôi đã bình chọn cho anh ấy). Dưới đây là những gì tôi đã làm:

Như bạn biết, bạn có thể tạo tệp cấu hình cho Analytics từ Hướng dẫn dành cho nhà phát triển của Google .

1: Chọn ứng dụng của bạn.

1) chọn một ứng dụng

2: Đóng cửa sổ bật lên! Nó che giấu ...

Đóng cửa sổ bật lên!

3: TÙY CHỌN CỦA ADMOB!

tùy chọn ẩn của admob

Tất nhiên, chọn và kích hoạt nó!

kích hoạt nó!

5: Bây giờ chúng ta có thể tạo tập tin cấu hình đúng cách!

tạo tập tin cấu hình

6: Chúng tôi đã làm được! Lần này, tệp cấu hình phải bao gồm api_key một cách thích hợp.

chúng tôi thực hiện nó!

Kết luận: Giao diện người dùng của công cụ tạo tương tác hơi khó hiểu ...


1
cảm ơn, tôi đã có thể có được cấu hình mới, nhưng IDE vẫn phàn nàn rằng nó bị thiếu api_key

Một chút bối rối ... Thật kinh khủng !!! Kudos cho lời giải thích rõ ràng của bạn.
Niels

7

Bạn có thể tải lại google-services.jsontập tin.

Các bước để tải xuống:

1). Nhấp vào menu trên cùng trong ứng dụng của bạn trong FirebaseBảng điều khiển.

2). Bấm vào quản lý.

3). Bạn sẽ tìm thấy Download the latest configtùy chọn tệp, tải xuống và thay thế google-services.jsontệp trong ứng dụng của bạn.


4

Đầu tiên trong tệp JSON của bạn

Thay thế

"api_key": []

với

"api_key": [{ "current_key": "" }]

Sau đó, việc xây dựng lớp sẽ thành công nhưng khi bạn chạy ứng dụng của mình, bạn có thể gặp lỗi như sau ..

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.2.2\d20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b\jackson-core-2.2.2.jar
    File2: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.2.2\3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson-databind-2.2.2.jar
    File3: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.2.2\285cb9c666f0f0f3dd8a1be04e1f457eb7b15113\jackson-annotations-2.2.2.jar

Để khắc phục sự cố này, bạn có thể thêm phần sau vào tệp app.gradle của mình .. Nó hoạt động với tôi.

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }

Chỉnh sửa: Nó cho tôi thấy một số lỗi sau khi xây dựng tệp apk. Vì vậy, tôi phải tải lại tập tin json. Sau 2 lần dùng thử, tôi đã nhận được tệp json với khóa api hợp lệ.


3

Nếu bạn không sử dụng Firebase, liên kết chính xác để tạo tệp cấu hình google-services.json thực sự được tìm thấy ở đây .


2

tạo lại google-services.json tại https://developers.google.com/cloud-messaging/android/client#get-config , một điều quan trọng là bạn phải bật Cloud Messaging trong bước "Chọn dịch vụ" , mở google mới Tập tin -service.json bạn sẽ thấy những từ như

    "api_key": [
     {
       "current_key": "xxxxxxxxxxx"
     }"

không có từ này hoặc không có giá trị của current_key không phải là tệp đúng


2

Tôi đã có thể giải quyết vấn đề này bằng các bước không được trả lời ở đây. Câu trả lời này KHÔNG cho phép Cloud Messaging, nó chỉ lấy khóa máy chủ của nó.

Vì vậy, trước tiên, hãy truy cập Firebase Console, sau đó vào Cài đặt dự án và sau đó nhấp vào tab "Nhắn tin trên đám mây". Nhìn vào nơi nó nói "khóa máy chủ" và nếu không có phím dài hiển thị (không phải số "ID người gửi"), hãy nhấp vào "Khóa tái tạo" và một phím dài sẽ hiển thị. Sao chép khóa đó và đặt nó vào tệp google-services.json của bạn tại : "api_key": [ {"current_key" : "key goes here"} ].

Phương pháp này đã giúp tôi trong khi không ai trong số những người khác đang làm việc, vì vậy hy vọng điều này sẽ giúp được ai đó.


2

nhập mô tả hình ảnh ở đây

Nhấp vào Tổng quan -> Biểu tượng bánh răng -> Cài đặt dự án.

nhập mô tả hình ảnh ở đây

Truy cập Tải xuống cấu hình mới nhất và Nhấp vào nút google-service.json để tải xuống tệp và lưu nó vào thư mục ứng dụng và Biên dịch lại. Thưởng thức!


2

Bạn cần thêm dấu vân tay chứng chỉ SHA vào dự án của mình và sau đó tải lại tệp google-services.jason, tệp này sẽ chứa "api_key": [{"current_key": "xxxxxx"}].

Bạn có thể xem trang sau để xem cách tạo dấu vân tay:

https://developers.google.com/android/guides/client-auth

Trên windows, chỉ cần thực hiện lệnh sau và sử dụng android làm mật khẩu cho mục đích gỡ lỗi:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

1

Sử dụng Firebase

GoogleServices'. > Missing api_key/current_key object

Tôi đã gặp lỗi này sau khi cập nhật một dự án hiện có lên Dịch vụ Firebase mới. Tệp google-service.json được tạo được tải xuống từ trang cài đặt dự án firebase không bao gồm api_keycần thiết.

Từ các câu trả lời khác ở đây, có vẻ như Google / Firebase Cloud Messaging (GCM / FCM) cần được thêm vào api_keyđể được đưa vào google-service.jsontệp này.

Vì vậy, tôi đã thêm một phụ thuộc vào FCM firebase trước khi tải lại tệp và lần này đã bao gồm khóa.

Bao gồm FCM (GCM)

dependencies {
     compile 'com.google.firebase:firebase-messaging:9.0.0'
}

1

Nếu bạn không muốn cấu hình lại và tải xuống google-services.jsontệp thì bạn có thể lấy khóa api trực tiếp từ bảng điều khiển firebase. Chỉ cần đi đến

Tổng quan> Thêm ứng dụng khác> Web

Bạn sẽ nhận được cấu hình cho cơ sở dữ liệu của bạn sẽ chứa apiKey. Chỉ cần sao chép giá trị đó và đặt nó vào current_keygiá trị được biểu thị bằng XXX bên dưới

"api_key": [{ "current_key": "XXX" }]

0

Đối với người di cư căn cứ hỏa lực:

đảm bảo bạn đã thêm ít nhất một Dấu vân tay trong cài đặt dự án của mình và tải xuống lại tệp google-services.json


Cảm ơn người đàn ông, tôi đã đi theo hướng dẫn trong phòng thí nghiệm mã và không thêm khóa SHA1 lúc đầu. Sau đó tôi phải thêm vào vì ApiKey của tôi - CurrentKey bị thiếu. Không chắc đó có phải là trường hợp hay không. Nhưng nó đã giải quyết vấn đề của tôi.
Rana Ranvijay Singh

0

Nếu bạn đang sử dụng firebaes, bạn phải sao chép serverKey từ firebase sang google-services.json

 "api_key": [{ "current_key": "SERVER_KEY"}

Để lấy Khóa máy chủ, Goto ProjectOverview> Cài đặt dự án> CloudMessaging> Sao chép HOẶC tạo và sao chép serverKey ..


0

thêm phần này vào tệp google-service.json của bạn. bạn sẽ tìm thấy nó trong ứng dụng / google-service.json

"api_key": [{"current_key": "your-google-api-key"}]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.