2012-07-12 33 views
7

Google có một ví dụ về một ứng dụng OAuth2 hereGoogle OAuth2 dòng lệnh ví dụ

Tôi completelly mới để OAuth2 và tôi muốn để có được ví dụ này làm việc trước khi tôi chuyển sang tích hợp OAuth2 với ứng dụng của tôi. Những gì tôi đã làm như sau:

  1. Đăng ký một ứng dụng thử nghiệm
  2. Nhận Client ID và Khách hàng bí mật
  3. Configure những giá trị đó vào client_secrets.json
  4. Chạy ứng dụng thử nghiệm: python moderator.py

Ứng dụng mở trình duyệt, nơi tôi có thể (với tư cách người dùng) ủy quyền cho ứng dụng truy cập vào tài khoản của tôi. Tuy nhiên, Google đang phàn nàn như thế này (400 Bad Request):

Error: redirect_uri_mismatch 
The redirect URI in the request: http://localhost:8080/ did not match a registered redirect URI 
Learn more 
Request Details 
from_login=1 
scope=https://www.googleapis.com/auth/moderator 
response_type=code 
access_type=offline 
redirect_uri=http://localhost:8080/ 
approval_prompt=auto 
as=-xxxxxxxxxxxxx 
pli=1 
client_id=xxxxxxxxxxx.apps.googleusercontent.com 
authuser=0 
hl=en 

Tôi đoán localhost: 8080 đến từ một máy chủ web nội bộ bắt đầu bởi moderator.py. Câu hỏi của tôi là: có ai đó đã lấy ví dụ này để làm việc không? Tôi cần những thành phần nào khác (cấu hình apache, DNS, ...)

Tôi rất bối rối với OAuth2 và mọi trợ giúp sẽ được đánh giá cao.

Trả lời

0

Trong OAuth 2.0, thông số redirect_uri thường được đăng ký với nhà cung cấp. Nhà cung cấp cũng nên thực thi redirect_uri chỉ https.

Bạn cần phải đăng ký redirect_uri với Google ở ​​đây: https://code.google.com/apis/console/?pli=1#access

+3

Tôi đã đăng ký ứng dụng thử nghiệm trong bảng điều khiển API của Google, nhưng tôi đang chạy ứng dụng từ dòng lệnh (nó được gọi là "ví dụ dòng lệnh"). Tôi không có URI mà tôi có thể chuyển hướng đến. Tôi cần làm cách nào để chạy ví dụ này để người dùng có thể cho phép ứng dụng của tôi truy cập vào dữ liệu người dùng. Đây chỉ là một ví dụ đơn giản để hiểu cách OAuth2 hoạt động, nhưng tôi không thể chạy nó. – dangonfast

2

Trước hết, xin lỗi nếu câu trả lời của tôi là không phải là rất chính xác, bởi vì tôi cũng rất mới để OAuth (và thậm chí python) ... và cũng xin lỗi nếu nó đến quá muộn, tôi không thường truy cập ở đây.

Bạn đã cố gắng sử dụng này (làm việc cho tôi): REDIRECT_URI = 'urn: IETF: wg: oauth: 2.0: OOB'

Kiểm tra này: https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

Here Tôi có một đoạn mã với quy trình OAuth hoàn chỉnh hoạt động.

+0

Đây là câu trả lời đúng cho các ứng dụng giao diện điều khiển –

0

Có lẽ thử đăng ký IP bên ngoài của bạn với Google (có thể yêu cầu một số cổng fowarding trên router của bạn)? Nếu điều này không thành công, có thể bạn có thể sử dụng SimpleServer của Python, đăng ký IP của bạn và nhận máy chủ này để xử lý chuyển hướng.

0

redirect_uri của bạn được thiết lập để 'http://localhost:8080/' vì bạn vượt qua một mặc định (Tôi không biết làm thế nào để mô tả nó) cờ tham số để run_flow (dòng chảy, lưu trữ, cờ)

nếu bạn nhìn vào xác định cho run_flow() chức năng bạn sẽ tìm thấy điều này:

It presumes it is run from a command-line application and supports the 
following flags: 

    ``--auth_host_name`` (string, default: ``localhost``) 
     Host name to use when running a local web server to handle 
     redirects during OAuth authorization. 

    ``--auth_host_port`` (integer, default: ``[8080, 8090]``) 
     Port to use when running a local web server to handle redirects 
     during OAuth authorization. Repeat this option to specify a list 
     of values. 

    ``--[no]auth_local_webserver`` (boolean, default: ``True``) 
     Run a local web server to handle redirects during OAuth 
     authorization. 
Các vấn đề liên quan