2012-04-04 33 views
8

Vì vậy, tôi đang sử dụng người ghi chép để kết nối với Facebook (OAuth 2). Tuy nhiên, tôi gặp sự cố khi nhận mã thông báo ủy quyền. Trên số Play's website họ nói rằngCách sử dụng OAuth 2 trong Play Framework 2.0

"Phiên bản 2 đủ đơn giản để được triển khai dễ dàng mà không cần thư viện hoặc người trợ giúp".

Tuy nhiên, tôi không chắc chắn cách thực hiện việc này!

Tôi đã thử thay đổi tệp tuyến đường sẽ gửi khóa cho phương thức được tạo.

GET /slivr_auth/*name  controllers.Application.getKey(name) 

Tuy nhiên, phím auth có '?' trong url, vì vậy tôi không thể chụp nó dưới dạng chuỗi.

Bất kỳ trợ giúp hoặc lời khuyên nào sẽ được đánh giá cao!

+0

Bạn đã giải quyết vấn đề này chưa? – 030

+0

Trong trường hợp giúp, tác giả của cuốn sách "Play Framework Essentials", Julien Richard-Foy, đã bao gồm [ví dụ] (https://github.com/julienrf/pfe-samples/blob/ea59bd7/pfe-scala /oauth/app/controllers/oauth/OAuth.scala) trong repo github của cuốn sách. Tôi đã không xem xét nó nhiều như tôi đã chọn sử dụng Silhouette thay vào đó, nhưng nó có thể cung cấp một số hiểu biết tốt – acros

Trả lời

4

Để trả lời câu hỏi cụ thể của bạn, bạn có thể nhận được các thông số yêu cầu (query) bằng cách gọi:

Controller.request().queryString() 

Bắt OAuth2 là dễ dàng nhưng không phải tầm thường. Nó giúp để có một mẫu làm việc. Tôi khuyên bạn nên tải xuống Play1 và tìm kiếm mẫu để Xác thực Facebook. Và sau đó chuyển mã sang Play2. Tôi đã làm ở trên và thấy rằng quá trình này rất hữu ích. Bạn sẽ nhận ra rằng mỗi trang web và API có quirks/nhu cầu, do đó, có rất ít mã bổ sung mà dường như có thể sử dụng hình thức một trang web khác.

Câu trả lời từng bước khác là có một số bước. Trước tiên, bạn cần có một số access_token và sau đó bạn có thể sử dụng nó. Để có được một access_token bạn cần phải gửi người dùng đến các url trang web cho phép, cho đến nay facebook này sẽ là một cái gì đó như:

https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth 

Khi người dùng của bạn đã được chấp nhận uỷ quyền, trang web sẽ chuyển hướng người dùng với một mã số, một cái gì đó như http://yourdomain.com/auth?code=XYZ_ABC. Sau đó, bạn sẽ cần phải yêu cầu từ url mã thông báo truy cập trang web để nhận mã thông báo truy cập. Đối với Facebook, điều này giống như sau:

https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=... 

Phản hồi từ url trên sẽ có access_token trong đó.

Bây giờ, bạn có thể bắt đầu sử dụng mã thông báo truy cập để yêu cầu thông tin.

1

Tôi không biết liệu nó có thể giúp ích hay không, nhưng tôi đã tạo ứng dụng Play 2.x trong Scala và Java hỗ trợ xác thực OAuth/CAS/OpenID/HTTP và truy xuất hồ sơ người dùng: https://github.com/leleuj/play-pac4j.

Để được hỗ trợ OAuth, nó dựa trên Scribe và hỗ trợ Facebook, Twitter, Google, Yahoo, DropBox, Github, LinkedIn, Windows sống, WordPress ...

0

Tôi đã kiểm tra nhiều ví dụ, nhưng this one công trình ra khỏi cái hộp.

  1. bản sao repo
  2. điều hướng để samples/java/play-authenticate-simple-oauth
  3. tạo Google credentials và thêm clientIdclientSecret-conf/play-authenticate/mine.conf
  4. chạy sbt run
  5. điều hướng với localhost: 9000
  6. đăng nhập
Các vấn đề liên quan