GoogleWebAuthorizationBroker.AuthorizeAsync Se Bloque
Notre site web pour télécharger des vidéos sur youtube depuis le code-behind (asp.net application mvc). Je vais essayer d'obtenir le google des informations d'identification, mais quand je l'appelle la AuthorizeAsync, l'application se bloque. J'ai cherché partout une solution et aucun ne semble pour aider. J'ai déjà cherché pour l'évidente sur google et de dépassement de pile. la plupart de ce que j'ai trouvé mentionné que l'application peut ne pas avoir accès à la le dossier appdata, j'ai donc essayé de changer le dossier dans le disque dur c, d lecteur et dans le réel inetpub emplacement. je l'ai testé et j'ai trouvé que j'étais capable de l'écriture d'application de ces emplacements.
pour être plus précis, l'utilisateur est notre admin, les clients de télécharger des vidéos à nous, et que l'administrateur approuve. lorsque l'administrateur approuve, il est affiché sur notre compte youtube. l'admin ne devrait pas avoir à faire quelque chose, mais cliquez sur le bouton d'approbation.
À faire une réelle question, que puis-je faire pour obtenir passé les AuthorizeAsync? Laissez-moi savoir si vous avez besoin de plus d'info
UserCredential credential;
GoogleWebAuthorizationBroker.Folder = "YouTube.Auth.Store";
using (var stream = new FileStream(CredentialsPath, FileMode.Open,
FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
//This OAuth 2.0 access scope allows an application to upload files to the
//authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None,
new FileDataStore("YouTube.Auth.Store")
).Result;
}
Je n'ai pas résolu ce problème, mais au cas où quelqu'un veut savoir, je crois que j'ai trouvé une solution ici: anilanar.wordpress.com/2013/07/19/...
Google, en dépit d'être en haut de l'Internet, aspire à fournir des erreurs pour les développeurs. Je déteste l'aide de son client bibliothèques.
AuthorizeAsync aussi accroché pour moi et après de nombreux essais et d'erreurs étapes trouvé que le problème était de chemin d'accès dans la " nouvelle FileDataStore("YouTube.Auth.Le magasin") " a été mauvais sur le serveur où il a été en cours d'exécution.
OriginalL'auteur iedoc | 2014-12-19
Vous devez vous connecter pour publier un commentaire.
Trouvé un moyen d'obtenir le passé de cette.
J'ai utilisé GoogleAuthorizationCodeFlow à la place. c'est ce qu'il s'est avéré pour ressembler à:
Qu'est-ce que
REFRESH_TOKEN
?c'est ce que j'utilise pour mon
GoogleWebAuthorizationBroker.AuthorizeAsync()
appel. Ils ressemblent donc je suppose que la réponse à votre question est "oui".oui, vous devez littéralement utiliser la chaîne "user" - qui vient de l'API Google exemple de code: developers.google.com/youtube/v3/code_samples/...
est un permanent de jeton que vous pouvez échanger plus tard pour le jeton d'accès pour être utilisé par votre côté serveur de l'application (comme c'est le contexte ici). Vous pouvez jouer avec elle dans Google OAuth aire de Jeux developers.google.com/oauthplayground. Flux de travail devrait être comme suit: (i) vous Vous inscrivez un nouveau projet dans Google Console console.developers.google.com et à générer des "Autres" informations d'identification. Qui vous donnera clientId et clientSecret. (ii) que vous utilisez
GoogleWebAuthorizationBroker.AuthorizeAsync
une fois pour autoriser l'application et obtenirREFRESH_TOKEN
(iii) vous coder en dur dans le code 🙂OriginalL'auteur
Il est possible de sortir si ce, par exemple à l'aide d'un délai d'attente, parce que la
AuthorizeAsync
méthode a la mise en œuvre d'unCancellationToken
.TokenSource
pour obtenir le Jeton lui-même.AuthorizeAsync
méthode.Maintenant, après 20 secondes, lorsque le
AuthorizeAsync
était pas terminé, l'appelant de cette méthodeRunAsync
reçoivent une Exception.OriginalL'auteur
Cette ligne génère un jeton d'accès à YouTube.Auth.Magasin/xxx, et vous avez besoin de faire un clic droit ce fichier -> propriétés -> Copie vers le Répertoire de Sortie -> Copie toujours dans visual studio
cela fonctionne pour moi.
OriginalL'auteur
Le code suivant vous permet d'utiliser votre google drive les informations nécessaires pour demander des informations de connexion de l'utilisateur, et téléchargez le fichier sur votre serveur pour effectuer une demande:
Voici le Formulaire en ligne .page aspx:
OriginalL'auteur