2016-12-02 16 views
6

Im triển khai ứng dụng Android cho phép người dùng truyền trực tiếp sang kênh youtube từ ứng dụng. Tôi đã tạo khóa API và ID khách hàng OAuth 2.0 enter image description herecom.google.android.gms.auth.GoogleAuthException: UNREGISTERED_ON_API_CONSOLE

Nhưng tôi nhận được một ngoại lệ sau đây: com.google.android.gms.auth.GoogleAuthException: UNREGISTERED_ON_API_CONSOLE hoặc khi tôi cố gắng tổ chức sự kiện hoặc khi tôi cố gắng tìm kiếm sự kiện được tạo theo cách thủ công trên kênh youtube.

tôi sử dụng đoạn mã sau để tạo ra một đối tượng youtube

String accountName = mContext.getString(R.string.google_account_name); 
     String apiKey = mContext.getString(R.string.google_api_key); 
     String clientID = mContext.getString(R.string.google_api_client_id); 
     String clientName = mContext.getString(R.string.google_api_client_name); 

     GoogleAccountCredential credential = 
       GoogleAccountCredential.usingOAuth2(mContext, 
         Arrays.asList(YouTubeScopes.YOUTUBE)); 
     credential.setSelectedAccountName(accountName); 

//  String SCOPE = "audience:server:client_id:" + clientID + ":api_scope:" + YouTubeScopes.YOUTUBE; 
//  GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(mContext, SCOPE); 
//  credential.setSelectedAccountName(accountName); 


     youtube = new YouTube.Builder(transport, jsonFactory, credential) 
       .setApplicationName(clientName) 
       .setYouTubeRequestInitializer(new YouTubeRequestInitializer(apiKey)) 
       /*.setGoogleClientRequestInitializer(new YouTubeRequestInitializer(apiKey))*/ 
       .build(); 

Sau đó, để tạo ra một sự kiện:

LiveBroadcastSnippet broadcastSnippet = new LiveBroadcastSnippet(); 
     broadcastSnippet.setTitle(name); 
     broadcastSnippet.setScheduledStartTime(new DateTime(futureDate)); 

     LiveBroadcastContentDetails contentDetails = new LiveBroadcastContentDetails(); 
     MonitorStreamInfo monitorStream = new MonitorStreamInfo(); 
     monitorStream.setEnableMonitorStream(false); 
     contentDetails.setMonitorStream(monitorStream); 

     // Create LiveBroadcastStatus with privacy status. 
     LiveBroadcastStatus status = new LiveBroadcastStatus(); 
     status.setPrivacyStatus("unlisted"); 

     LiveBroadcast broadcast = new LiveBroadcast(); 
     broadcast.setKind("youtube#liveBroadcast"); 
     broadcast.setSnippet(broadcastSnippet); 
     broadcast.setStatus(status); 
     broadcast.setContentDetails(contentDetails); 

     // Create the insert request 
     YouTube.LiveBroadcasts.Insert liveBroadcastInsert = youtube 
       .liveBroadcasts().insert("snippet,status,contentDetails", 
         broadcast); 

     // Request is executed and inserted broadcast is returned 
     LiveBroadcast returnedBroadcast = liveBroadcastInsert.execute(); //<= This line generates the exception 

tôi rõ ràng đã làm điều gì sai, nhưng tôi không thể tìm ra những gì. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn trước

Trả lời

8

Vấn đề là, khi bạn gỡ lỗi, bạn đang sử dụng kho khóa được tạo trong ~/.android/debug.keystore và không phải bất kỳ khóa ký nào bạn nghĩ bạn đang sử dụng.

Khi bạn tạo khóa, chẳng hạn như để phát hành APK đã ký, bạn nghĩ rằng SHA1 này là khóa được yêu cầu bởi giao diện Google API. Nó không phải là.

Nếu bạn thay thế thư mục trong thư mục ~/.android bằng khóa ký tên của bạn, nó bị hỏng vì thiếu khóa androiddebugkey. FYI, mật khẩu mặc định cho khóa được tạo tự động là "android".

Để biết chỉ đường về vị trí kho khóa của bạn, hãy xem https://developer.android.com/studio/publish/app-signing.html trong "Hết hạn của chứng chỉ gỡ lỗi".

gì bạn phải làm:

1) Xóa debug.keystore của bạn và khởi động lại IDE của bạn. Điều này sẽ tạo ra một debug.keystore mới với bí danh chính "androiddebugkey".

2) Nếu IDE của bạn không tạo kho khóa mới, hãy chạy lại ứng dụng Android của bạn. Nó sẽ tạo ra nó lần này trong ~/.android/

3) Điều hướng đến/path/to/jre/bin và thêm đường dẫn này vào biến môi trường hệ thống của bạn. Điều này sẽ cho phép bạn truy cập keytool.

4) Điều hướng đến thư mục của debug keystore của bạn và chạy lệnh này: keytool -list -keystore debug.keystore -alias androiddebugkey

5) giao diện điều khiển của bạn sẽ nhắc bạn nhập mật khẩu keystore (nó là "android").

6) Lấy khóa SHA1 từ kho khóa và đặt THAT KEY vào giao diện API của bạn và bạn sẽ thấy nó hoạt động.

+2

Khởi động lại IDE không tạo lại tệp. Tôi có cần phải làm gì nữa không? –

+0

Điều tương tự cũng xảy ra với tôi. –

+0

Thử các đề xuất trong https://stackoverflow.com/questions/3997748/how-can-i-create-a-keystore –

6

Trong trường hợp của tôi, lỗi UNREGISTERED_ON_API_CONSOLE do lỗi chính tả trong tên gói trong AndroidManifest gây ra. Đơn giản nhưng mất nhiều giờ đấu tranh với các phím và SHA.

+0

Hoặc khi bạn chuyển từ khóa gỡ lỗi sang khóa cuối cùng và quên cập nhật SHA của bạn. Gosh! Đã lãng phí thời gian của cuộc đời tôi. – Alberto

0

tôi đã vấn đề này, và sau rất nhiều tìm kiếm, trong build.gadleapplicationId của tôi đã khác nhau từ tên gói mà tôi đã putted trên Console của Google

defaultConfig { 
    applicationId "br.com.glicado.glicado" <-- WAS WRONG, IN MY CASE THE RIGHT IS "br.com.glicado" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 
1

Sử dụng các câu trả lời trước khi điều này, tôi đã sử dụng nó như là một tham chiếu để hiểu và sửa chữa mỏ của tôi và thực hiện một thủ tục từng bước dễ dàng hơn nhiều về cách tôi cố định mỏ.

Trong lời nhắc lệnh Windows.

Điều hướng đến thư mục bin java của bạn.

C: \ Program Files \ Java \ jdk1.8.0_111 \ bin>

và nhập ff. lệnh

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 

rồi chạy ff. đang

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

khi yêu cầu mật khẩu, gõ "android" (không có dấu ngoặc kép)

kết quả quan trọng SHA1 từ mã ở trên. Sao chép nó và dán nó trên đám mây google của bạn console here

enter image description here

Trên google cloud console trang web làm điều này

vào tab ở bên trái, tìm và bấm vào nút "API & Dịch vụ"

sau đó trên trang mới, trên tab bên trái một lần nữa, tìm và nhấp vào "Thông tin xác thực"

bây giờ sao chép dán khóa bạn đã sao chép từ cửa sổ nhắc lệnh trên tex tbox bên dưới "Dấu vân tay ký chứng chỉ"

đảm bảo rằng id ứng dụng trên ứng dụng và bảng điều khiển đám mây của Google khớp với nhau.

enter image description here