0

在我的應用程序中,我試圖獲取頻道數據,例如視頻上傳總次數和用戶數。但是,運行我的應用程序時,我遇到以下錯誤:Youtube API請求,服務錯誤403

E/Service Error:: 403 : The request did not specify any Android package name or signing-certificate fingerprint. Please ensure that the client is sending them or use the API Console to update your key restrictions.

至於獲得OAuth認證,我都遵循一些指南,其中包括設在Google Developers網頁上的指南:

  1. 導航到我的C:\Program Files\Java\jre1.8.0_101\bin目錄,並在終端窗口中打開此位置。
  2. 輸入以下命令keytool -list -v - keystore "C:\Users\[PATH_TO_ANDROIDDEBUGKEY].keystore"。作爲密碼使用android
  3. 在API控制檯:
    • 創建的證書,以及用於密鑰限制,選擇Android應用
    • 複製的SHA-1指紋並粘貼到API控制檯。還輸入我的應用程序包名稱(可在我的AndroidManifest.xml文件中找到)。
  4. 保存的設置。

我複製的API密鑰到我的應用程序,並且總是靜態地訪問它。 即:

youtube = new YouTube.Builder(...).setYouTubeRequestInitializer(new YouTubeRequestInitializer(Config.YOUTUBE_API_KEY)).setApplicationName("MY_APPLICATION_NAME").build(); 

YouTube.Channels.List query = youtube.channels().list("statistics"); 
query.setKey(Config.YOUTUBE_API_KEY); 
query.setFields("items(statistics(subscriberCount,videoCount))"); 
ChannelListResponse response = query.execute(); 

所以我不知道爲什麼我遇到的時候我已經正確地完成上述步驟的錯誤?這個問題是previously discussed here,但選擇的答案不是我期望的,因爲我想要有關鍵限制。


其他步驟我已經採取措施來解決該服務錯誤

  • 生成的你擁有簽署APK和密鑰庫。我遵循了上面提供的相同步驟(更改密鑰庫路徑)以獲取SHA-1指紋並將其粘貼到API控制檯--->未解決
  • 創建了一個全新的API密鑰,並遵循上面提供的步驟--->沒有解決
  • 使用該終端命令來代替,以獲得SHA-1指紋:keytool -exportcert -alias androiddebugkey -keystore [path-to-debug-or-production-keystore] -list -v --->沒有解決
  • 保證了YouTube數據API第3版的API管理器中啓用儀表板--->未解決

任何人都可以請提供一個答案,爲什麼我收到了一個服務錯誤,如果我已按照指南中列出的證書步驟?

+0

嗯,我不知道這是否是一個錯誤。但根據這個[線程](http://stackoverflow.com/questions/23740251/youtube-api-v3-always-return-error-403-accessnotconfigured)它可能是谷歌系統中的一個錯誤。我在互聯網上看到的唯一解決方法是使用瀏覽器鍵而不是Android鍵。 如果您有時間,請嘗試檢查這個[SO問題](http://stackoverflow.com/questions/33989062/restricting-usage-for-an-android-key-for-a-google-api)關於限制Android密鑰的使用情況。 – KENdi

+0

@Kendi感謝您的回覆。我不知道如何將您的評論標記爲可接受的回覆?我感謝您的幫助 :) – ByteSized

回答

1

嗯,我不知道這是否是一個錯誤。但根據這thread它可能是谷歌系統中的一個錯誤。我在互聯網上看到的唯一解決方法是使用瀏覽器鍵而不是Android鍵。如果你有時間,也試着檢查這個SO question關於限制Android密鑰的使用情況