Keep getting Error: redirect_uri_mismatch using yo

2020-02-12 05:10发布

Hi I hope someone can help me out here.

I have a Web Application (asp.net) on my local machine, I am trying to upload video to YouTube using this sample https://developers.google.com/youtube/v3/code_samples/dotnet#upload_a_video

I have set up client id and secret for Web application in Google console when I try to upload video a browser tab opens to select one of my google accounts and once I sig in I get redirect_uri_mismatch the response details on that page are below:

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

one interesting thing is that the redirect_uri=http://localhost:55556/authorize/ is completely different from the one set up in Google console and the one in client_secrets.json also each time I get the error page the port number changes.

redurect urls and origins are set as follows in Google console I think I have added all combinations just in case:

Authorized redirect URI

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

Authorized JavaScript origins

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

I am not sure why redirect-uri on the error page does not match any of the Authorized redirect URI I have specified in Google console ? any ideas ?

Also is it possible that everything is set-up correctly in Google console and my code but this error is triggered by something else like maybe I missed some setting on my you tube account ? I did not make any setting changes since I don't think I have to is that correct ?

5条回答
欢心
2楼-- · 2020-02-12 05:21

I experienced a similar problem when trying to setup the quickstart app for the Drive REST API. I kept getting the redirect_uri_mismatch error and the port number with that error kept changing. The fix for me was to change the redirect URI in the Google Developers Console for my app to not include the port number.

查看更多
\"骚年 ilove
3楼-- · 2020-02-12 05:25

Ok I belive that direct video upload to the website owner account is no longer supported in YT API v3.0 according to those posts.

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?

Shame, I think I will need to host the videos that users upload on my servers.

However the original issue was fixed by adding this URI to the redirect URIs in the developer console

http://localhost/authorize/

Google OAuth 2 authorization - Error: redirect_uri_mismatch

查看更多
forever°为你锁心
4楼-- · 2020-02-12 05:26

I got it to work by setting the Redirect URIs to exactly this:

http://localhost:50517/signin-google

Note: - it does not work with a trailing slash - port number is whatever your visual studio is assigning - I set JavaScript Origins to:

http://localhost:50517/

With you, though, would be nice if someone actually documented this somewhere...

查看更多
叛逆
5楼-- · 2020-02-12 05:27

You should look into your code where you create the authorization URI. You need pass one of the redirect URIs you registered with Google developer console. I guess you're using some OAuth2 library which uses the localhost:port/authorize as the default redirect URI. The port changes because each time you start your local server, it picks a different port number. To fix it, you should specify a port number when starting it, for example, 8080. Then you should register localhost:8080/AddContent.aspx in Google developer console and pass it to whichever library you use to create the authorization URI.

查看更多
Anthone
6楼-- · 2020-02-12 05:28

There is a really easy way to get round this and I kicked myself when it dawned on me.

I am using "Web Application" credentials - you'll want the credentials manager open btw.

Run the DotNet sample app and let the browser open (I get the "Select An Account" page) - then look in the URL for the redirect URI that's been automatically generated by Google's code something like:

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

Then just go to the credentials manager and add this URL to the allowed list and save. Now select your google account and see what happens - it takes a few minutes for the API to update - if you get the redirect error page just hit back and select you account again - eventually it works and returns back to visual studio.

Once the account has been authorised once it sticks (clear the bin directory to unstick it) but this means you can now put a break point in the code and look at the credentials variable to get the refresh token everyone is so desperately trying to get so that you can persist account connections.

查看更多
登录 后发表回答