Ủy quyền Google OAuth 2 - Lỗi: redirect_uri_mismatch


386

Trên trang web https://code.google.com.vn/apis/console Tôi đã đăng ký ứng dụng của mình, thiết lập ID khách hàng được tạo :Bí mật khách hàng cho ứng dụng của tôi và cố gắng đăng nhập bằng Google. Thật không may, tôi nhận được thông báo lỗi:

Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI

scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id

Điều này có nghĩa là gì, và làm thế nào tôi có thể sửa nó? Tôi sử dụng đá quý omniauth-google-oauth2 .


Đối với bất kỳ ai khác có vấn đề này, lưu ý rằng bạn có thể gỡ lỗi sự cố này bằng cách truy cập URL như https://accounts.google.com/o/oauth2/auth?client_id={client_id}&response_type=token&redirect_uri={redirect_uri}&scope={scope}trong trình duyệt, thay vì chạy toàn bộ ứng dụng của bạn để kiểm tra.
Jack M

Tôi đã nhận thấy, google tự động liên kết redirect_uri trong dấu ngoặc kép trong (redirect_uri = "anything") phía trên url và dẫn đến lỗi này. Nếu tôi loại bỏ dấu ngoặc kép này, tôi có thể đi qua màn hình tiếp theo. Bây giờ, làm thế nào chúng ta có thể trốn tránh dấu ngoặc kép này, vì nó được tự động chuyển hướng bởi chính google.
Abhishek Soni

Câu trả lời:


389

URI chuyển hướng (nơi phản hồi được trả về) phải được đăng ký trong bảng điều khiển API và lỗi cho thấy bạn đã không làm điều đó hoặc không thực hiện đúng.

Chuyển đến bảng điều khiển cho dự án của bạn và xem phần Truy cập API. Bạn sẽ thấy client ID& client secretở đó, cùng với một danh sách các URI chuyển hướng. Nếu URI bạn muốn không được liệt kê, nhấp vào chỉnh sửa cài đặt và thêm URI vào danh sách.

EDIT: (Từ một nhận xét được đánh giá cao bên dưới) Lưu ý rằng việc cập nhật bảng điều khiển api của google và sự thay đổi đó có mặt có thể mất một thời gian. Nói chung chỉ vài phút nhưng đôi khi có vẻ lâu hơn.


9
Có một số loại phép thuật, bởi vì khi tôi thử cùng một cuộc gọi lại một giờ trước, nó đã không hoạt động, nhưng bây giờ nó đã hoạt động. Dù sao cũng cảm ơn!
dùng984621

337
Gặp phải một vấn đề tương tự và muốn lưu ý rằng việc cập nhật bảng điều khiển api của google và sự thay đổi đó có mặt có thể mất một thời gian. Nói chung chỉ vài phút nhưng đôi khi có vẻ lâu hơn.
sdolphin

31
Hãy để tôi hoàn thành câu trả lời của @ Bazyl: trong tin nhắn tôi nhận được, họ đã đề cập đến URI " localhost: 8080 " (tất nhiên, có vẻ như là một cấu hình google nội bộ). Tôi đã thay đổi URI ủy quyền cho cái đó, " localhost: 8080 " và thông báo không xuất hiện nữa ... Và video đã được tải lên ... Tài liệu APIS rất RẤT ... Mỗi khi tôi có việc gì đó làm việc với google apis, tôi chỉ đơn giản là cảm thấy "may mắn", nhưng thiếu tài liệu tốt về nó .... :(
David L

7
Mở cửa sổ riêng tư / ẩn danh trong trình duyệt của bạn và thử lại. Đôi khi điều này khắc phục vấn đề bộ nhớ đệm.
Dunc

17
google không có tùy chọn cho uri chuyển hướng trong bảng điều khiển google trong "Api & Auth> Thông tin xác thực" không quan trọng nếu tôi tạo Id khách hàng mới hoặc tạo khóa mới, đơn giản là không có cách nào để chỉ định uri chuyển hướng từ bảng điều khiển google.
dùng3338098

114

Trong trường hợp của tôi, nó là wwwnon-wwwURL. Trang web thực tế có wwwURL và URI chuyển hướng được ủy quyền trong Bảng điều khiển dành cho nhà phát triển của Google có non-wwwURL. Do đó, có sự không phù hợp trong URI chuyển hướng. Tôi đã giải quyết nó bằng cách cập nhật Authorized Redirect URIstrong Google Developer Console thành wwwURL.

Sự không phù hợp URI phổ biến khác là:

  • Sử dụng http://trong URI chuyển hướng được ủy quyền và https://làm URL thực tế hoặc ngược lại
  • Sử dụng dấu gạch chéo ( http://example.com/) trong URI chuyển hướng được ủy quyền và không sử dụng dấu gạch chéo ( http://example.com) làm URL thực tế hoặc ngược lại

Dưới đây là các ảnh chụp màn hình từng bước của Google Developer Console để nó hữu ích cho những ai đang gặp khó khăn trong việc định vị trang bảng điều khiển dành cho nhà phát triển để cập nhật URI chuyển hướng.

  1. Tới https://console.developers.google.com

  2. Chọn dự án của bạn

Chọn dự án của bạn

  1. Nhấp vào biểu tượng menu

Nhấp vào biểu tượng menu

  1. Bấm vào API Managermenu

Chọn trình quản lý API

  1. Bấm vào Credentialsmenu. Và dưới OAuth 2.0 Client IDs, bạn sẽ tìm thấy tên khách hàng của bạn. Trong trường hợp của tôi, nó là Web Client 1. Nhấp vào nó và một cửa sổ bật lên sẽ xuất hiện nơi bạn có thể chỉnh sửa Nguồn gốc Javascript được ủy quyềnURI chuyển hướng được ủy quyền .

Chọn menu Thông tin xác thực

Đây là một bài viết của Google về việc tạo dự án và ID khách hàng .


9
Câu trả lời này thực sự cần được đẩy lên cao hơn, vì nó cung cấp câu trả lời thực sự. Chúng tôi đã có cùng một vấn đề và điều này đã giúp giải quyết nó - cảm ơn!
winna

4
Vấn đề của tôi là tôi biết phải làm gì, nhưng không tìm thấy nó ở đâu trong UI. Các ảnh chụp màn hình ở đây đã giúp. Cảm ơn.
Allen

3
Tôi giữ nguồn gốc JavaScript được ủy quyền trống và các URI chuyển hướng được ủy quyền là 127.0.0.1/google_account/authentication và nó hoạt động từ tôi.
Krishh

1
Bạn có thể giúp tôi với câu hỏi của tôi? stackoverflow.com/questions/37307612/ từ
LatentDenis


91

Nếu bạn đang sử dụng nút Google+ javascript , thì bạn phải sử dụng postmessagethay vì URI thực tế. Tôi đã mất gần như cả ngày để tìm hiểu điều này vì các tài liệu của Google không nêu rõ vì lý do nào đó.


8
Vì câu hỏi này là câu hỏi hàng đầu khi googling thông báo lỗi, đây là một số gợi ý bổ sung. Như Mike nói, hãy sử dụng "postmessage" cho URI chuyển hướng của bạn. Bạn cần chỉ định điều này ở 2 vị trí (nếu bạn đang sử dụng luồng web-app-server-server). Một là trong nút g-đăng nhập trên javascript. Khác là trong máy khách ủy quyền đăng nhập trong mã máy chủ của bạn.
Rob Whiteside

câu trả lời chính xác. Tôi đã đăng bài bằng javascript và cần thiết để đặt 'oauth2_redirect_uri' => 'postmessage' trong tệp google API config.php.
dùng2998553

4
postmessage nghe có vẻ hay, nhưng kết quả là vô dụngError: invalid_request origin parameter is required!
user3338098

10
Sau vài giờ cố gắng giải quyết vấn đề này, câu trả lời của bạn giúp tôi rất nhiều! Tài liệu Google không rõ ràng lắm. Ở phía máy chủ, nếu bạn sử dụng thư viện Google API Client, bạn nên sử dụng mã này: $client->setRedirectUri('postmessage');thay vì$client->setRedirectUri('http://your.url...');
Guicara

3
Wow .... giải pháp @Guicara làm việc cho tôi sau nhiều giờ đập đầu vào tường.
djthoms

52

Trong bất kỳ luồng nào bạn đã truy xuất mã ủy quyền ở phía máy khách, chẳng hạn như GoogleAuth.grantOfflineAccess()API và bây giờ bạn muốn chuyển mã đến máy chủ của mình, đổi mã và lưu trữ mã thông báo truy cập và làm mới, sau đó bạn phải sử dụng chuỗi ký tựpostmessage thay vì redirect_uri.

Ví dụ: xây dựng trên đoạn mã trong tài liệu Ruby :

client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
auth_client.update!(
  :scope => 'profile https://www.googleapis.com/auth/drive.metadata.readonly',
  :redirect_uri => 'postmessage' # <---- HERE
)

# Inject user's auth_code here:
auth_client.code = "4/lRCuOXzLMIzqrG4XU9RmWw8k1n3jvUgsI790Hk1s3FI"
tokens = auth_client.fetch_access_token!
# { "access_token"=>..., "expires_in"=>3587, "id_token"=>..., "refresh_token"=>..., "token_type"=>"Bearer"}

Tài liệu duy nhất của Google để đề cập đến postmessagelà tài liệu đăng nhập Google+ cũ này . Đây là ảnh chụp màn hình và liên kết lưu trữ vì G + đang đóng và liên kết này có thể sẽ biến mất:

DOC API API kế thừa

Điều hoàn toàn không thể tha thứ là trang tài liệu cho Truy cập ngoại tuyến không đề cập đến điều này. #FacePalm


1
Chúa ơi, bài viết của bạn có vẻ hoàn toàn phi logic, nhưng đó là điều duy nhất hoạt động như một lá bùa. Cảm ơn rất nhiều, anh bạn !!!
mariobgr

@mariobgr Vâng, các câu trả lời khác ở đây đề cập đến postmessage, nhưng tôi muốn đưa ra các trường hợp cụ thể (ví dụ grantOfflineAccess) khi vụ hack không có giấy tờ điên rồ này là cần thiết đối với tôi. : PI cũng không muốn nó thành sự thật. :) Chi phí cho tôi hàng giờ đau đầu.
Jeff Ward

Cảm ơn bạn! Đây chính xác là những gì tôi cần.
ernbrn

Điều này cần phải có được sự chú ý của Google. Điều này là hoàn toàn khủng khiếp.
glade

Thật đáng kinh ngạc nhưng đúng ... O__o
mlb

41

Đối với ứng dụng web của tôi, tôi đã sửa chữa lỗi của mình bằng cách viết

instead of : http://localhost:11472/authorize/
type :      http://localhost/authorize/

Cảm ơn đã chia sẻ, nó giúp. Tôi đã bị kẹt vì điều này vì API GitHub OAuth2 không yêu cầu bạn xóa số cổng.
florisla 15/03/2016

Điều đó cũng làm việc cho tôi. Tôi đã theo dõi khóa học này: asp.net/mvc/overview/security/ , và nhận được 'lỗi uri'. Sau khi tôi đổi localhost: 44334 / đăng nhập-google thành localhost / đăng nhập-google, nó đã hoạt động. Cảm ơn rất nhiều cho lời khuyên hữu ích.
FrenkyB

1
Cảm ơn bạn rất nhiều. Tôi đã thử nghiệm với github.com/google/google-api-dotnet-client-samples và "URI chuyển hướng trong yêu cầu" dường như xuất phát từ một cổng khác mỗi lần tôi chạy nó. Điều này đã giúp tôi rất nhiều. Phải mất hàng giờ để tìm hiểu những gì đang xảy ra!
Alejandro Lozdziejski

Cảm ơn, điều này làm việc cho tôi quá. Chỉ cần thả cổng! :)
vidstige

30

Đảm bảo kiểm tra giao thức "http: //" hoặc "https: //" khi google cũng kiểm tra giao thức. Tốt hơn để thêm cả hai URL trong danh sách.


10
Tôi ước tôi đã cuộn đến câu trả lời của bạn hai giờ trước đó
BiAiB

2
Không, tốt hơn là chỉ đảm bảo bạn đang sử dụng https.
Brad Koch

7

Điều này có vẻ khá lạ và khó chịu khi không có giải pháp "một" nào ở đó. đối với tôi http: // localhost: 8000 không hoạt động nhưng http: // localhost: 8000 / đã hoạt động.


2
điều này là do redirect_uriphải là một MATCH CHÍNH XÁC trên bảng điều khiển dành cho nhà phát triển và trong ứng dụng của bạn.
tony gil

6

Khi bạn đăng ký ứng dụng của mình tại https://code.google.com.vn/apis/console và tạo ID khách hàng, bạn có cơ hội chỉ định một hoặc nhiều URI chuyển hướng. Giá trị của redirect_uritham số trên URI xác thực của bạn phải khớp chính xác với một trong số chúng.


Và đó là trường rất có vấn đề đối với các liên kết dựa trên Angular sâu vì google không đồng ý [ Landed1.github.io/ideo.html#/oauth2callback[is một URL hợp lệ
đã hạ cánh

2
Có vẻ như url https://code.google.com/apis/consolekhông còn hợp lệ nữa
Anthony Kong

Cảm ơn @AnthonyKong vì bản cập nhật của bạn. Tôi đã thay đổi url để sống. Vui lòng kiểm tra tại.
Kathir

6

Câu trả lời này giống như câu trả lời của Mikecâu trả lời của Jeff , cả hai đều được đặt redirect_urithànhpostmessage đứng về phía khách hàng. Tôi muốn thêm nhiều hơn về phía máy chủ, và cả trường hợp đặc biệt áp dụng cho cấu hình này.

Ngăn xếp công nghệ

Cuối tuần

Frontend

Luồng "Mã" (Cụ thể cho Google OAuth2)

Tóm tắt: Phản ứng -> yêu cầu "mã" xác thực xã hội -> yêu cầu mã thông báo jwt để có được trạng thái "đăng nhập" về mặt máy chủ / cơ sở dữ liệu phụ trợ của riêng bạn.

  1. Frontend (React) sử dụng "nút đăng nhập Google" responseType="code"để lấy mã ủy quyền. (nó không phải là mã thông báo, không phải là mã thông báo truy cập!)
    • Nút đăng nhập google là từ react-google-loginđã đề cập ở trên.
    • Nhấp vào nút sẽ hiển thị cửa sổ bật lên để người dùng chọn tài khoản. Sau khi người dùng chọn một và cửa sổ đóng lại, bạn sẽ nhận được mã từ chức năng gọi lại của nút.
  2. Frontend gửi cái này đến điểm cuối JWT của máy chủ phụ trợ.
    • POST yêu cầu, với { "provider": "google-oauth2", "code": "your retrieved code here", "redirect_uri": "postmessage" }
  3. Đối với máy chủ Django của tôi, tôi sử dụng Django REST Framework JWT + Django REST Social Auth. Django nhận được mã từ frontend, xác minh nó bằng dịch vụ của Google (hoàn thành cho bạn). Sau khi được xác minh, nó sẽ gửi JWT (mã thông báo) trở lại lối vào. Frontend hiện có thể thu hoạch mã thông báo và lưu trữ ở đâu đó.
    • Tất cả REST_SOCIAL_OAUTH_ABSOLUTE_REDIRECT_URI, REST_SOCIAL_DOMAIN_FROM_ORIGINREST_SOCIAL_OAUTH_REDIRECT_URItrong Django settings.pylà không cần thiết . (Chúng là các hằng số được sử dụng bởi Django REST Social Auth) Tóm lại, bạn không phải thiết lập bất cứ điều gì liên quan đến url chuyển hướng trong Django . Mặt trước "redirect_uri": "postmessage"trong React đủ. Điều này có ý nghĩa bởi vì công việc xác thực xã hội mà bạn phải thực hiện về phía bạn là tất cả các yêu cầu POST kiểu Ajax ở phía trước, không gửi bất kỳ hình thức nào, vì vậy thực tế không có chuyển hướng nào xảy ra theo mặc định. Đó là lý do tại sao url chuyển hướng trở nên vô dụng nếu bạn đang sử dụng luồng mã + JWT và cài đặt url chuyển hướng phía máy chủ không có hiệu lực.
  4. Django REST Social Auth xử lý việc tạo tài khoản. Điều này có nghĩa là nó sẽ kiểm tra email / tên tài khoản google và xem nó có khớp với bất kỳ tài khoản nào trong cơ sở dữ liệu không. Nếu không, nó sẽ tạo một cái cho bạn, sử dụng email và họ chính xác. Nhưng, tên người dùng sẽ giống như youremailprefix717e248c5b924d60nếu email của bạn là youremailprefix@example.com. Nó nối thêm một số chuỗi ngẫu nhiên để tạo một tên người dùng duy nhất. Đây là hành vi mặc định, tôi tin rằng bạn có thể tùy chỉnh nó và thoải mái tìm hiểu tài liệu của họ.
  5. Frontend lưu mã thông báo đó và khi nó phải thực hiện CRUD cho máy chủ phụ trợ, đặc biệt là tạo / xóa / cập nhật, nếu bạn đính kèm mã thông báo trong Authorizationtiêu đề của mình và gửi yêu cầu đến phụ trợ, giờ đây, phần phụ trợ Django sẽ nhận ra đó là thông tin đăng nhập, tức là đã được xác thực người dùng. Tất nhiên, nếu mã thông báo của bạn hết hạn, bạn phải làm mới nó bằng cách thực hiện một yêu cầu khác.

Ôi chúa ơi, tôi đã dành hơn 6 giờ và cuối cùng đã hiểu điều này! Tôi tin rằng đây là lần đầu tiên tôi thấy điều này postmessage. Bất cứ ai làm việc trên một Django + DRF + JWT + Social Auth + Reactsự kết hợp chắc chắn sẽ đâm vào điều này. Tôi không thể tin rằng không có bài báo nào ngoài đó đề cập đến điều này ngoại trừ câu trả lời ở đây. Nhưng tôi thực sự hy vọng bài đăng này có thể giúp bạn tiết kiệm hàng tấn thời gian nếu bạn đang sử dụng ngăn xếp Django + React.


5

2015July15 - đăng nhập đã hoạt động vào tuần trước với tập lệnh này khi đăng nhập

<script src="https://apis.google.com/js/platform.js" async defer></script>

ngừng hoạt động và bắt đầu gây ra lỗi 400 với Error: redirect_uri_mismatch

và trong phần CHI TIẾT: redirect_uri=storagerelay://...

tôi đã giải quyết nó bằng cách thay đổi thành:

<script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>

Gặp phải Lỗi 400 tương tự, nhưng việc thay đổi tập lệnh không hoạt động bên trong Cordova WebView của tôi.
Nick Spacek

@NickSpacek vui lòng kiểm tra xem dấu ngoặc kép bị thiếu có chịu trách nhiệm không.
tony gil

bạn có thể giúp tôi với câu hỏi của tôi? stackoverflow.com/questions/37307612/ từ
LatentDenis

5

Danh mục:

  • httphay https?
  • &hay &amp;?
  • dấu gạch chéo ( /) hoặc mở ?
  • (CMD/CTRL)+F, tìm kiếm kết quả khớp chính xác trong trang thông tin xác thực. Nếu không tìm thấy thì tìm kiếm cái còn thiếu.
  • Đợi đến khi google làm mới nó. Có thể xảy ra trong mỗi nửa giờ nếu bạn thay đổi thường xuyên hoặc nó có thể ở trong bể bơi. Đối với trường hợp của tôi, nó đã gần nửa giờ để có hiệu lực.

4

Trong trường hợp của tôi, loại Ứng dụng thông tin của tôi là "Khác". Vì vậy, tôi không thể tìm thấyAuthorized redirect URIs trong trang thông tin đăng nhập. Nó dường như xuất hiện trong loại Ứng dụng: "Ứng dụng web". Nhưng bạn có thể nhấp vào Download JSONnút để lấy client_secret.jsontệp. nhập mô tả hình ảnh ở đây

Mở tệp json và bạn có thể tìm thấy tham số như thế này : "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]. Tôi chọn sử dụng http: // localhost và nó hoạt động tốt với tôi.



4

Các url chuyển hướng là trường hợp nhạy cảm.

Trong trường hợp của tôi, tôi đã thêm cả hai: http: // localhost: 5023 / AuthCallback / IndexAsync http: // localhost: 5023 / authcallback / indexasync


1
Và hãy cẩn thận với ký tự "/" ở cuối URL. Đôi khi là cần thiết, những lần khác thì không.
ajmena

vì vậy chúng tôi có thể giữ localhost như request_uri ngay cả đối với các trang web trực tiếp?
Không thể phá vỡ

4

Không có giải pháp nào ở trên làm việc cho tôi. dưới đây đã làm

thay đổi các url chuyển hướng được ủy quyền thành - https: // localhost: 44377 / đăng nhập-google

Hy vọng điều này sẽ giúp được ai đó.


nếu chúng tôi sử dụng localhost, nó cũng sẽ hoạt động cho trang web được xuất bản. Ý tôi là nếu trong bảng điều khiển API tôi thêm URI yêu cầu localhost. Nó sẽ hoạt động như thế nào khi trang web hoạt động? Hoặc đối với các trang web trực tiếp, chúng tôi cần đặt một bộ URI thực tế khác trong Bảng điều khiển API?
Không thể phá vỡ

4

hãy cẩn thận với phần bổ sung /ở cuối url http://localhost:8000khác vớihttp://localhost:8000/


Đây là những gì đã giúp tôi :)
Jacek Góraj



2

đối với tôi đó là vì trong danh sách 'URI chuyển hướng được ủy quyền' tôi đã đặt không chính xác https://developers.google.com/oauthplayground/thay vì https://developers.google.com/oauthplayground(không có /ở cuối).


1

Hãy để tôi hoàn thành câu trả lời của @ Bazyl: trong tin nhắn tôi nhận được, họ đã đề cập đến URI "http://localhost:8080/" (tất nhiên, có vẻ như là một cấu hình google nội bộ). Tôi đã thay đổi URI ủy quyền cho cái đó "http://localhost:8080/"và thông báo không xuất hiện nữa ... Và video đã được tải lên ... Tài liệu APIS rất RẤT ... Mỗi khi tôi có điều gì đó làm việc với google apis, tôi chỉ đơn giản là cảm thấy "may mắn", nhưng thiếu tài liệu tốt về nó .... :( Vâng, tôi đã làm cho nó hoạt động, nhưng tôi không hiểu tại sao nó thất bại, và tại sao nó chỉ hoạt động ... Chỉ có MỘT nơi để xác nhận URI trên web và nó đã được sao chép trong client_secrets.json ... Tôi không nhận được nếu có một nơi THIRD nơi người ta nên viết cùng một URI ... Tôi không chỉ tìm thấy tài liệu mà còn cả Thiết kế GUI của Google '


1

Bất cứ ai gặp khó khăn trong việc tìm nơi đặt url chuyển hướng trong bảng điều khiển mới: API & Auth -> Thông tin xác thực -> ID khách OAuth 2.0 -> Nhấp vào liên kết để tìm tất cả các url chuyển hướng của bạn


1

Tôi cần tạo ID khách hàng mới trong API & Dịch vụ -> Thông tin xác thực -> Tạo thông tin đăng nhập -> OAuth -> Khác

Sau đó, tôi đã tải xuống và sử dụng client_secret.json với chương trình dòng lệnh đang tải lên tài khoản youtube của mình. Tôi đã cố gắng sử dụng ID khách OAuth của Ứng dụng Web, điều này khiến tôi gặp lỗi URI chuyển hướng trong trình duyệt.


0

Hãy thử làm những kiểm tra này:

  1. Gói ID trong bảng điều khiển và trong ứng dụng của bạn. Tôi thích đặt ID gói ứng dụng như thế này "org.peredovik. $ {PRODUCT_NAME: rfc1034identifier}"
  2. Kiểm tra xem bạn đã thêm các loại URL tại tab Thông tin chỉ cần nhập ID gói của bạn trong Mã định danh và Lược đồ URL, vai trò được đặt thành Trình chỉnh sửa
  3. Trong bảng điều khiển tại cloud.google.com "API & auth" -> mẫu "Màn hình đồng ý" về ứng dụng của bạn. "Tên sản phẩm" là trường bắt buộc.

Thưởng thức :)


0

Trong trường hợp của tôi, tôi đã phải kiểm tra loại ID khách hàng cho các ứng dụng web / ứng dụng đã cài đặt.

các ứng dụng đã cài đặt: http: // localhost [URI chuyển hướng] Trong trường hợp này localhost chỉ đơn giản hoạt động

ứng dụng web: Bạn cần tên miền hợp lệ [Chuyển hướng URI:]


0

Những gì bạn cần làm là quay trở lại Bảng điều khiển dành cho nhà phát triển của bạn và đi tới API & Auth> Màn hình đồng ý và điền vào đó. Cụ thể, tên sản phẩm.


Ngoài ra, không sử dụng tên sản phẩm cũng được sử dụng trong dự án khác. Hãy chắc chắn rằng nó là duy nhất.
florisla 15/03/2016


0

Tôi đã có hai URI yêu cầu trong Bảng điều khiển, http: // xxxxx / client / api / bảng tính / authredirecthttp: // localhost .

Tôi đã thử tất cả các câu trả lời hàng đầu cho câu hỏi này và xác nhận rằng không ai trong số chúng là vấn đề của tôi.

Tôi đã xóa localhost khỏi Bảng điều khiển, cập nhật client_secret.json trong dự án của tôi và lỗi không khớp đã biến mất.


0

Tôi gặp vấn đề tương tự với đăng nhập google, tôi chuẩn bị nhổ tóc !!! Tôi đã nhập chính xác các cuộc gọi lại của mình trong bảng Thông tin xác thực của google tại bảng điều khiển dành cho nhà phát triển google, đây là các url chuyển hướng của tôi:

https://www.example.com/signin-google

https://www.example.com/signin-google/

https://www.example.com/oauth2callback

https://www.example.com/oauth2callback/

mọi thứ có vẻ ổn phải không? nhưng nó vẫn không hoạt động cho đến khi tôi thêm một Url huyền diệu nữa. Tôi đã thêm url đăng nhập google (đó là cuộc gọi lại mặc định của google) mà không có www và vấn đề được giải quyết.

đưa nó vào tài khoản (tùy thuộc vào tên miền của bạn) bạn có thể hoặc không cần thêm cả có và không có url www


0

Tôi có ứng dụng frontend và api phụ trợ.

Từ máy chủ phụ trợ của tôi, tôi đã kiểm tra bằng cách nhấn google api và gặp phải lỗi này. Trong suốt thời gian của tôi, tôi đã tự hỏi tại sao tôi cần phải đưa raredirect_uri vì đây chỉ là phần phụ trợ, vì frontend nó có ý nghĩa.

Những gì tôi đang làm là cung cấp khác nhau redirect_uri(mặc dù hợp lệ) từ máy chủ (giả sử đây chỉ là trình giữ chỗ, nó chỉ phải được đăng ký với google) nhưng url giao diện của tôi đã tạo mã mã thông báo khác. Vì vậy, khi tôi chuyển mã này trong thử nghiệm phía máy chủ của mình (đối với redirect-uri khác), tôi đã gặp phải lỗi này.

Vì vậy, đừng làm sai lầm này. Đảm bảo rằng lối vào của bạn redirect_urigiống như máy chủ của bạn khi google sử dụng nó để xác thực tính xác thực.


0

Dưới đây là các lý do Lỗi: sự cố redirect_uri_mismatch xảy ra:

  1. Trường chuyển hướng URL trống tại dự án google của bạn.
  2. URL chuyển hướng không phù hợp với trang web của bạn
  3. Quan trọng! Nó sẽ chỉ hoạt động với miền hoạt động như example.com, book.com, v.v (Không hoạt động với máy chủ cục bộ hoặc URL AWS LB)

Khuyến nghị sử dụng URL miền


Điều gì nên làm là google tạo ra redirect_uri param mọi lúc? Nó được tạo dưới dạng localhost: XXXXX với số cổng ngẫu nhiên, bỏ qua uri chuyển hướng tôi thiết lập tạo máy khách.
A. Makarevich

0

Mẹo nhỏ là nhập url chuyển hướng đúng vào thời điểm tạo ID. Tôi thấy rằng việc cập nhật url chuyển hướng một khi ID đã được tạo thông qua 'Chỉnh sửa' chỉ không hoàn thành công việc. Điều cũng làm việc với tôi là sao chép toàn bộ thư mục 'nhà cung cấp' và sao chép nó vào cùng một vị trí có tệp 'oauth' (chỉ cho đến khi bạn tạo thành công mã thông báo và sau đó bạn có thể xóa thư mục 'nhà cung cấp' trùng lặp). Điều này là do cố gắng trỏ đến thư mục nhà cung cấp qua '../vendor/autoload' không hiệu quả với tôi.

Vì vậy, hãy xóa ID OAuth Client rắc rối hiện có của bạn và thử phương pháp này, nó sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.