2012-04-04 66 views
8

所以我使用抄寫員連接到Facebook(OAuth 2)。但是,我無法獲得授權令牌。在Play's website他們說,如何在Play Framework 2.0中使用OAuth 2

「版本2是很簡單,足夠容易實施沒有圖書館或助手,」。

但是,我不太清楚如何做到這一點!

我試着改變我的路由文件,將密鑰發送到一個構建的方法。

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

但是,授權密鑰包含'?'在URL中,所以我無法將其捕獲爲字符串。

任何幫助或建議,將不勝感激!

+0

你解決了這個問題嗎? – 030 2017-02-13 09:07:33

+0

如果有幫助,「Play Framework Essentials」一書的作者Julien Richard-Foy已經包含了一個[示例](https://github.com/julienrf/pfe-samples/blob/ea59bd7/pfe-scala) /oauth/app/controllers/oauth/OAuth.scala)在本書的github回購中。我沒有看多少,因爲我選擇使用Silhouette,但它可能會提供一些很好的見解 – acros 2017-12-03 16:27:34

回答

4

爲了回答您的具體問題,你可以通過調用get請求(查詢)參數:

Controller.request().queryString() 

獲得的OAuth2是容易的,但不是小事。它有助於有一個工作樣本。我會建議下載Play1,然後查找Facebook身份驗證示例。然後將代碼移植到Play2。我做了上述,發現這個過程非常有啓發性。你會意識到,每個網站和API都有怪癖/需求,所以幾乎沒有附加代碼可以在一個站點到另一個站點之間使用。

一步一步的答案是有幾個步驟。首先,你需要得到一個access_token然後你可以使用它。爲了得到你需要給用戶發送到網站授權的url,到目前爲止Facebook上分享這個會是這樣的一個access_token

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

一旦你的用戶已經接受授權,該網站將用戶重定向一個代碼,像http://yourdomain.com/auth?code=XYZ_ABC。然後您需要從站點訪問令牌URL請求獲取訪問令牌。對於Facebook來說,這將是這樣的:

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

從上面的URL中的反應將在它的access_token

現在,您可以開始使用訪問令牌來請求信息。

1

我不知道它是否有幫助,但我已經在Scala和Java中創建了一個支持OAuth/CAS/OpenID/HTTP身份驗證和用戶配置文件檢索的Play 2.x客戶端:https://github.com/leleuj/play-pac4j

是OAuth的支持,它是基於抄寫並支持Facebook,微博,谷歌,雅虎,DropBox的,Github上,LinkedIn的Windows Live,WordPress的...

0

我已經檢查了多個例子,但this one作品出來的盒子。

  1. 克隆回購
  2. 導航到samples/java/play-authenticate-simple-oauth
  3. 創建Google credentials並添加clientIdclientSecretconf/play-authenticate/mine.conf
  4. 運行sbt run
  5. 導航到localhost:9000
  6. 登錄