2014-04-14 10 views
7

Witam Mam nadzieję, że ktoś może mi w tym pomóc.Powtarzający się błąd: redirect_uri_mismatch za pomocą youtube api v3

Mam aplikacji internetowych (ASP.NET) na moim komputerze lokalnym, Próbuję przesłać film wideo do serwisu YouTube za pomocą tej próbki https://developers.google.com/youtube/v3/code_samples/dotnet#upload_a_video

mam skonfigurować identyfikator klienta i tajemnicy dla aplikacji sieci Web w konsoli kiedy Google staram się przesłać film zakładka przeglądarka otwiera, aby wybrać jedną z moich kont google i raz sig w dostaję redirect_uri_mismatch szczegóły reagowania na tej stronie znajdują się poniżej:

cookie_policy_enforce=false 
scope=https://www.googleapis.com/auth/youtube.upload 
response_type=code 
access_type=offline 
redirect_uri=http://localhost:55556/authorize/ 
pageId=[some page id removed here for security reasons] 
display=page 
client_id=[some unique id removed here for security reasons].apps.googleusercontent.com 

Interesującą rzeczą jest to, że redirect_uri=http://localhost:55556/authorize/ jest zupełnie inna z tego skonfigurowanego w konsoli Google i tego w client_secret s.json również za każdym razem, gdy otrzymuję stronę błędu, zmienia się numer portu.

urls redurect i początki są ustawione w następujący sposób w konsoli Google myślę Dodałem wszystkie kombinacje na wszelki wypadek:

Autoryzowanego przekierować URI

http://localhost/ 
https://localhost/ 
http://localhost:50169/AddContent.aspx 
https://localhost:50169/AddContent.aspx 
http://localhost:50169 

Upoważnieni początki JavaScript

http://localhost/ 
https://localhost/ 
http://localhost:50169/ 
https://localhost:50169/ 

Nie jestem pewien, dlaczego przekierowanie-uri na strona błędu nie pasuje do żadnego z Autoryzowanego identyfikatora URI przekierowania określonego w konsoli Google? jakieś pomysły ?

Czy to możliwe, że wszystko jest poprawnie skonfigurowane w konsoli Google i moim kodzie, ale ten błąd został wywołany przez coś innego, jak być może przegapiłem jakieś ustawienie na moim koncie you tube? Nie wprowadziłem żadnych zmian ustawień, ponieważ nie uważam, że muszę to zrobić poprawnie?

+0

czy to działa? – DaImTo

+0

Nie, Google/YT zmienił swoje biblioteki i nie możesz już tego robić w ten sposób, ale minęło już kilka miesięcy, opuściłem tę funkcję w moim projekcie i skupiłem się na innych. Myślę, że możesz zamiast tego użyć różnych opcji bezpłatnych udziałów wideo. Zauważyłem też, że niektóre strony internetowe używały YT do udostępniania filmów, a teraz korzystają z innych stron trzecich, więc nie jestem pewien. Ale daj mi znać, jak się masz. – IronHide

Odpowiedz

0

Powinieneś zajrzeć do kodu, w którym utworzysz identyfikator URI autoryzacji. Musisz przekazać jeden z przekierowanych identyfikatorów URI zarejestrowanych w konsoli programisty Google. Domyślam się, że używasz pewnej biblioteki OAuth2, która używa localhost: port/authorize jako domyślnego identyfikatora URI przekierowania. Port zmienia się, ponieważ za każdym razem, gdy uruchamiasz lokalny serwer, wybiera on inny numer portu. Aby to naprawić, należy podać numer portu podczas uruchamiania, na przykład 8080. Następnie należy zarejestrować localhost: 8080/AddContent.aspx w konsoli programisty Google i przekazać go do dowolnej biblioteki, której używasz do utworzenia identyfikatora URI autoryzacji.

+0

Jak już wspomniałem, uważnie śledziłem przykładowy kod w powyższym linku. Identyfikator URI przekierowania jest ustawiony w pliku client_secret.json. Uważam, że OAuth2 używa adresu URL przekierowania podanego w pliku client_secret.json. Numer portu mojego hosta lokalnego jest już ustawiony statycznie i nigdy się nie zmienia (50169) i jest taki sam w pliku client_secret.json. – IronHide

+0

Nikt nie może odpowiedzieć na to pytanie lub pomóc? – IronHide

0

Dostałem go do pracy przez ustawienie przekierowania URI dokładnie to:

http://localhost:50517/signin-google 

Uwaga: - nie działa z tylnego slash - numer portu to niezależnie od Visual Studio jest przypisanie - ustawić Origins JavaScript, żeby:

http://localhost:50517/ 

z wami, choć byłoby miło, gdyby ktoś faktycznie udokumentowane to gdzieś ...

+0

to część "signin-google" jest wymagana? Czy mimo to powinienem wybrać lokalizację, do której użytkownik ma zostać przekierowany po zalogowaniu? Więc jeśli chcesz, aby użytkownik przekierowywał się na jakąś stronę, np. MyPage.aspx, URI przekierowania będzie http: // localhost: 50517/myPage.aspx – IronHide

+0

Dziwne jest to, że na stronie błędu dostaję to redirect_uri = http: // localhost: 55556/authorize/kiedy sprawdzam szczegóły i nie mam pojęcia, skąd pochodzi 55556 i jak to się zmieniło przekierowanie uri z tego, co jest w client_secret.json – IronHide

+0

to nie działa dla mnie: (same problemy jak @IronHide – Riga

2

OK Wierzę, że bezpośrednie przesyłanie wideo na konto właściciela witryny nie jest już obsługiwane w interfejsie API YT 3.0 w zależności od tych wpisów.

Can YouTube Direct Upload to a Common Account for All Users?

How can I get the youtube webcam widget to upload to one account using API?

wstyd, myślę, że będę musiał obsługiwać filmy, które użytkownicy przesyłać na moich serwerach.

Jednak oryginalny problem został rozwiązany przez dodanie tego URI URI przekierowania w konsoli programisty

http://localhost/authorize/

Google OAuth 2 authorization - Error: redirect_uri_mismatch

+0

Dzięki IronHide. Http: // localhost/authorize/pracował również dla mnie.Nawet działa na bezpiecznym protokole, takim jak https: // localhost/authorize/ –

+0

localhost/authorize również dla mnie pracował i być może fakt, że zażądał strony w oknie incognito. – Riga

1

przeżyłem podobny problem podczas próby instalacji App quickstart dla interfejsu Drive REST API. Ciągle otrzymuję błąd redirect_uri_mismatch, a numer portu z tym błędem ciągle się zmienia. Naprawiono dla mnie zmianę identyfikatora URI przekierowania w Google Developers Console, ponieważ moja aplikacja nie zawiera numeru portu.

0

Jest naprawdę łatwy sposób obejść to i kopnąłem się, gdy mnie olśniło.

Używam poświadczeń "aplikacji sieci Web" - będziesz chciał otworzyć menedżera poświadczeń btw.

Uruchom aplikację przykładową DotNet i niech otwartą przeglądarkę (mam stronę „Wybierz konto”) - a następnie szukać w URL przekierowania URI, który został automatycznie wygenerowanym kodem coś Google, takich jak:

redirect_uri%3Dhttp://localhost:62041/authorize/ 

Następnie przejdź do menedżera poświadczeń i dodaj ten adres URL do dozwolonej listy i zapisz. Teraz wybierz swoje konto Google i zobacz, co się stanie - aktualizacja interfejsu API potrwa kilka minut - jeśli pojawi się strona błędu przekierowania, po prostu naciśnij i ponownie wybierz konto - w końcu działa i wraca do wizualnego studia.

Po autoryzacji konta po jego zapisaniu (wyczyść katalog bin, aby go odkleić), ale oznacza to, że możesz teraz umieścić punkt przerwania w kodzie i sprawdzić zmienną poświadczeń, aby uzyskać odświeżony token, który wszyscy tak rozpaczliwie starając się, aby można było utrzymywać połączenia z kontem.