Sto provando a utilizzare l'API YouTubeData con l'autenticazione OAuth 2.0 su Android, e sono un po 'in difficoltà con esso.YouTube Data API con OAuth2.0 su Android
Ho cercato molto online, ma non c'è molto aiuto per l'implementazione di Android.
Prima di tutto, non mi è chiaro quale sia il modo migliore per ottenere un token OAuth. Nel documento suggeriscono che per Android è meglio ottenerlo utilizzando la lib di servizi di Google Play. È vero? se sì, dovrebbe essere piuttosto banale seguendo questa guida: https://developers.google.com/android/guides/http-auth. Ma a questo punto avrò il token in un oggetto String
.. come dovrei usarlo con l'API YouTubeData? Dovrei metterlo da qualche parte nello YouTube.Builder
?
YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
public void initialize(HttpRequest request) throws IOException {
}
}).setApplicationName("AppName").build();
se sì, qualcuno sa dove?
Ricerca su StackOverflow mi sono imbattuto in questa domanda: What to do after getting Auth Token - Android Youtube API. Qui Ibrahim Ulukaya dice che è meglio usare GoogleAccountCredential
. Per quello che ho capito (Access to Google API - GoogleAccountCredential.usingOAuth2 vs GoogleAuthUtil.getToken()) la versione Android di GoogleAccountCredential
dovrebbe utilizzare lo GoogleAuthUtil
fornito dalla lib dei servizi di Google Play, quindi potrebbe essere piuttosto utile per semplificare il processo. Ho esaminato il progetto di esempio suggerito da Ibrahim Ulukaya (https://github.com/youtube/yt-direct-lite-android) e ho implementato tutto come fa lui. Ma non sembra funzionare molto bene poiché sto ottenendo questo messaggio solo nel logcat: "C'era un errore IO: com.google.android.gms.auth.UserRecoverableAuthException: NeedPermission: null".
(Si noti che ho abilitato tutte le API necessarie sulla Google Console e ho creato l'ID cliente per la mia app)
A questo punto sono perso.
Devo utilizzare direttamente il GoogleAuthUtil
dalla lib di Google Play services? in questo caso, una volta ottenuto il token come String
, come posso usarlo con le API YouTubeData?
O dovrei usare lo GoogleAccountCredential
? in questo caso qualcuno sa come posso risolvere l'errore "NeedPersmission: null"?
---- EDIT:
dettagli su ciò che la mia applicazione sta cercando di fare: essendo questa la mia prima esperienza con questo tipo di API ho iniziato dalla roba semplice: recuperare le informazioni video e poi riprodurre quei video, senza alcuna autenticazione dell'utente. Sono riuscito a farlo abbastanza facilmente, ma per lo scopo della mia app ho bisogno di accedere ai dati dell'utente, in particolare gli utenti devono essere in grado di apprezzare e commentare i video. Così ho iniziato a implementare OAuth2, cercando di fare le stesse query esatte che stavo facendo prima (recuperare informazioni video).
Ciao, questo è esattamente ciò che fa l'esempio di Ibrahim Ulukaya (https://github.com/youtube/yt-direct-lite-android). Sembra davvero la soluzione migliore. Il problema è che sto ricevendo questo errore: "C'era un errore IO: com.google.android.gms.auth.UserRecoverableAuthException: NeedPermission: null" nel logcat, e ovviamente l'API non funziona. Qualche idea su come risolverlo? –
http://stackoverflow.com/questions/14383965/userrecoverableauthexception-needpermission Sono certo che lo sai, ma la tua applicazione necessita di varie autorizzazioni per accedere alle funzionalità del dispositivo (ad esempio Internet!) E accedere a YouTube per conto degli utenti. Esattamente quali permessi sono necessari variano a seconda del meccanismo di autenticazione che hai scelto. Vedi le discussioni Android collegate dove parla di GET_ACCOUNTS e USE_CREDENTIALS. Come appare il tuo manifest? (potrebbe valere la pena di chiederglielo come una domanda separata) –
Vedi manifest eghttps: //github.com/youtube/yt-direct-lite-android/blob/master/app/src/main/AndroidManifest.xml Hai anche bisogno per includere le credenziali API sviluppatore, ad es - http://stackoverflow.com/questions/29656454/declare-google-api-key-in-manifest-for-youtube-api. Potrebbe essere utile sapere esattamente cosa stai cercando di fare. –