30/09/2018, 16:18

Lỗi sử dụng OAuth của google khi tạo Client ID

Em chào anh Đạt, chào mọi người
Hiện tại em đang làm 1 dự án bằng ASP.net và có sử dụng OAuth để xác minh và đăng nhập vào hệ thống. Chức năng OAuth đã hoạt động khi em chạy trên localhost nhưng khi em đưa code lên IP public và thực hiện tạo API để sử dụng thì lại không được. Bây giờ server của em chưa có domain nên em thử sử dụng địa chỉ IP để xin cấp Client ID nhưng không được. Ở đây có ai đã từng sử dụng OAuth thì cho mình tham khảo ý kiến với. Có phải Google yêu cầu địa chỉ đó phải là địa chỉ của tên Domain hay không.?
Cảm ơn mọi người =))

Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

Anh đang dùng domain: http://daynhauhoc.com để đăng ký OAuth. Em thấy nó báo lỗi như thế nào, có thể gửi anh xem được không?

Nhỏ viết 18:27 ngày 30/09/2018

Em mới tìm hiểu về OAuth 2.0 nên chưa rõ lắm. OAuth có khác với OpenID 2.0 không ạ?
Em được biết thì thằng OpenID cũng sắp đóng cửa rồi nên cũng hơi băn khoăn

Lỗi của em gặp phải đây ạ.
Create ClientID
Error

Dang H. viết 18:23 ngày 30/09/2018

Google không support IP chỗ redirect URL, bạn phải để domain nó mới chịu

Nhỏ viết 18:27 ngày 30/09/2018

Anh @ltd hay bạn nào có thể giúp mình hiểu về cách thức xác thực người dùng khi sử dụng OAuth được không ạ. Hiện tại em xác nhận để người dùng truy cập vào hệ thống website của em bằng cách lấy địa chỉ email của người đăng nhập sau đó kiểm tra xem trong hệ thống có địa chỉ đó không? Nếu có thì chấp nhận cho họ vào. Nhưng em nghĩ cách đó không khoa học và dở quá.
Anh đạt có thể giúp em hiểu cách anh xác minh người dùng để đăng nhập vào hệ thống của http://daynhauhoc.com được không ạ? Em cảm ơn mọi người.

Nhỏ viết 18:23 ngày 30/09/2018

Continuing the discussion from Lỗi sử dụng OAuth của google khi tạo Client ID:

Google không support IP chỗ redirect URL, bạn phải để domain nó mới chịu

Cảm ơn bạn nhé. Mình hy vọng là vậy Vì hiện tại mình chưa có domain, và mình tạo trên host của http://somee.com thì google cho tạo Client ID nhưng không sử dụng được? Lỗi 400

Nguyễn Minh Dũng viết 18:21 ngày 30/09/2018

Anh sử dụng Open Source nên phần implement đó anh không quan tâm, anh chỉ quan tâm là anh lấy key API và secret API bỏ vào là chạy thôi. Về lĩnh vực này thì phải nhờ chuyên gia như các nhân vật @dangh, @laptrinhio, @tuanitpro

P/S: Có @ dư hay thiếu gì thì bỏ quá cho nhé.

Lập Trình Sư viết 18:31 ngày 30/09/2018

Cơ bản sẽ là thế này:

  1. Họ click vào nút google để đăng nhập vào site
  2. Sẽ đẩy vào trang Auth của Google+
  3. Lúc này sẽ được redirect về cái trang mà bạn cấu hình khi tạo Key trong Google Dev Console.
  4. Lấy được email của user, kiểm tra nếu có thì đẩy vô trang tiếp theo; nếu không có, tức là lần đầu tiên, thì có nhiều cách, cái này phụ thuộc vào UX của site bạn thôi. Cách 1: đẩy vô trang đăng kí trong đó điền sẵn thông tin email hay firstname, lastname, và user chỉ cần điền mật khẩu và xác nhận mật khẩu; hoặc ở đây chỉ cần bảo user nhập mật khẩu thôi cũng được. Cách 2: tạo tài khoản luôn cho user với email lấy được từ Google+ và gửi mail cho họ một password tự sinh ra.

Hầu hết các dịch vụ đều làm theo cách số 1 vì khi họ thay đổi thì có thông báo là yêu cầu họ đọc và xác nhận điều khoản abc … vì họ không đăng kí bằng email nên phải có cách nào đó là đảm bảo có cho họ biết cái này (pháp lý). Còn dịch vụ ko liên quan pháp lý hay nặng nề cái này thì làm theo cách 2 cũng được.

Dang H. viết 18:19 ngày 30/09/2018

Trường hợp của bạn là authentication, và làm đúng theo guide của Google rồi

https://developers.google.com/accounts/docs/OpenIDConnect#authuser

Nhỏ viết 18:29 ngày 30/09/2018

Với hệ thống của mình thì lại thế này. Mình chỉ cho phép Email có trong hệ thống được quyền đăng nhập vào bằng các mình lấy được thông tin đó từ google và kiểm tra. Nhưng vấn đề mình gặp phải hiện tại đó là:

  1. Mỗi khi người dùng đăng nhập bằng chức năng đó là lại phải accept ứng dụng đó 1 lần. Thông thường mình thấy họ chỉ cần accept 1 lần duy nhất là xong.
  2. Hiện tại mình sử dụng IP để tạo Client ID trên Google API nhưng không được chấp nhận, vậy có phải google chỉ chấp nhận sử dụng Domain hay không? Và tại sao khi mình sử dụng domain free thì vẫn tạo Client ID được nhưng bị báo lỗi 400 do nó không nhận dạng được url redirect mặc dù mình đã kiểm tra rất kỹ rồi và thử đi thử lại nhiều lần những vẫn không được.
    @laptrinhio
Dang H. viết 18:23 ngày 30/09/2018
  1. Bạn xem có bị trường hợp giống này không
    http://stackoverflow.com/questions/10508557/why-does-google-oauth2-re-ask-user-for-permission-when-i-send-them-to-auth-url-a

  2. Bạn bị lỗi 400 ở chỗ nào, cho mình xem cái URL được không

Update: Cái vụ không dùng được IP để redirect thì trên SO rất nhiều người cũng bảo vậy. Mình không tìm thấy lý do nhưng mình đoán cái này là tại vì một IP có thể có nhiều domain cùng trỏ về (shared hosting chẳng hạn) nên nếu redirect về IP thì sẽ không chính xác. Để hạn chế lỗi thì Google không cho dùng thôi

Lập Trình Sư viết 18:34 ngày 30/09/2018

Kinh nghiệm cá nhân trước thì ko sử dụng IP bao giờ, và chỉ dùng domain name.
Tạo ra hai môi trường khác nhau : DEVELOPMENT và PRODUCTION, mỗi môi trường sử dụng 1 key khác nhau để cấu hình, chứ không dùng chung như của bạn thế kia.

Nhỏ viết 18:19 ngày 30/09/2018

Kinh nghiệm cá nhân trước thì ko sử dụng IP bao giờ, và chỉ dùng domain name.Tạo ra hai môi trường khác nhau : DEVELOPMENT và PRODUCTION, mỗi môi trường sử dụng 1 key khác nhau để cấu hình, chứ không dùng chung như của bạn thế kia.

Có lẽ mình chưa hiểu rõ vể OAuth nên chưa biết, bạn có thể nói rõ cho mình hiểu về việc tạo ra 2 môi trường khác nhau như bạn đề cập được không? Và tại sao lại phải sử dụng nhiều key như vậy để làm gi?

Bài liên quan
0