2016-04-12 32 views
4

Kullanıcı youtube videoları almam gerekiyor. İşte sadece kullanıcı youtube kanallarını almaya çalışan kodum. Ama işe yaramıyor - hesap seçtikten sonra, loadYoutubeChannels her zaman hataları düzeltir. Bu answer ve bu yt-direct-lite-android'u okudum, ancak neden hata almadıklarını anlamıyorum, ama anlıyorum.YouTube.Builder'i kullanmanın doğru yolu,

{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "usageLimits", 
    "message" : "Access Not Configured. YouTube Data API has not been used in project 608941808256 bef$re or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/youtube/overview?project=608941808256 then r$try. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.", 
    "reason" : "accessNotConfigured", 
    "extendedHelp" : "https://console.developers.google.com/apis/api/youtube/overview?project=60894180$256" 
    } ], 
    "message" : "Access Not Configured. YouTube Data API has not been used in project 608941808256 befor$ or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/youtube/overview?project=608941808256 then ret$y. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry." 
} 
: demek (1) ve (2) iptal edilmiştir, ben bu hatayı alınca ben ApiKey kullanmadığınızda

class YotubeTestActivity extends AppCompatActivity { 

    private var credential: GoogleAccountCredential = _ 
    private var service: YouTube = _ 

    override def onCreate(savedInstanceState: Bundle): Unit = { 
    super.onCreate(savedInstanceState) 

    val prefs = getPreferences(Context.MODE_PRIVATE) 
    credential = GoogleAccountCredential.usingOAuth2(this, List(YouTubeScopes.YOUTUBE_READONLY)) 
    credential.setSelectedAccountName(prefs.getString(PrefAccountName, None.orNull)) 

    val transport = new NetHttpTransport() 
    val factory = new JacksonFactory() 

    service = new YouTube.Builder(transport, factory, credential) 
     .setApplicationName(getString(R.string.app_name)) 
     .setYouTubeRequestInitializer(new YouTubeRequestInitializer(ApiKey)) // <-- (1) 
     .build() 
    } 

    /* 
    check for Google Play Service 

    choose account 
    */ 

    private def onAccountChooseOk(accountName: String): Unit = { 
    credential.setSelectedAccountName(accountName) 

    val prefs = getPreferences(Context.MODE_PRIVATE).edit() 
    prefs.putString(PrefAccountName, accountName) 
    prefs.commit() 

    rxScalaRunInBackground(loadYoutubeChannels, onLoadYoutubeChannelsOk, onLoadYoutubeChannelsError) 
    } 

    private def loadYoutubeChannels(): ChannelListResponse = { 
    val channelsQuery = service.channels().list("contentDetails") 
    channelsQuery.setMine(true) 
    channelsQuery.setMaxResults(50l) 
    //channelsQuery.setKey(ApiKey) // <-- (2) 
    channelsQuery.execute() 
    } 

    private def onLoadYoutubeChannelsError(e: Throwable): Unit = { 
    Log.e(Tag, "onLoadYoutubeChannelsError", e) 

    e match { 
     case _: GooglePlayServicesAvailabilityIOException => // checkGooglePlayServicesAvailable() 
     case e: UserRecoverableAuthIOException => // startActivityForResult(e.getIntent, RequestAuthorization); 
     case _ => finish() 
    } 
    } 

    private def onLoadYoutubeChannelsOk(response: ChannelListResponse): Unit = { 
    Log.e(Tag, s"onLoadYoutubeChannelsOk: $response") 
    } 

} 

object YotubeTestActivity { 

    private val Tag = "YotubeTestActivity"  
    private val PrefAccountName = "accountName"  
    private val ApiKey = "API_KAY_FROM_DEV_CONSOLE" 

} 

: Burada
benim kodudur

0: i tarayıcı anahtarı veya api key kullandığınızda

, bu hatası alıyorum

{ 
    "code" : 401, 
    "errors" : [ { 
    "domain" : "global", 
    "location" : "Authorization", 
    "locationType" : "header", 
    "message" : "Invalid Credentials", 
    "reason" : "authError" 
    } ], 
    "message" : "Invalid Credentials" 
} 

zamanda kadar bir youtube verileri (kanal, vs) getirilirken i YouTubePlayerFragment'tir sadece içinde yt direkt-Lite-robot kullanımı ApiKey anlaşılır, ama olarak. Yani .. bu haksızlık.

Birisi neyi yanlış yaptığımı söyleyebilir mi? Teşekkürler.

Açık google developers console
Git için kimlik bilgileri/OAuth rıza ekran:

cevap

İlgili konular