I think this seems to be the one - Under :session and the following key :cemerick.friend/identity there is - :identity https://www.google.com/accounts/o8/id?id=AItOawlvddewdedwddrft56gt
Thanks, Murtaza On Thursday, December 20, 2012 11:56:53 PM UTC+5:30, Murtaza Husain wrote: > > Hi, > > Once the user is authenticated, how do I get hold of unique user > identifier that was returned by openid provider. > > I would like persist this user identifier with the user's authorization > details into the DB. > > Murtaza > > On Thursday, December 20, 2012 8:06:04 PM UTC+5:30, Murtaza Husain wrote: >> >> Chas, >> >> It was the header being sent. A form post sends data as url encoded, with >> header as url encoded form data, while the javascript library was posting >> data as application/json, that is the reason it was failing. Also thanks >> for the pointer on realm. >> >> Thanks, >> Murtaza >> >> >> On Thursday, December 20, 2012 4:03:19 PM UTC+5:30, Chas Emerick wrote: >>> >>> Your Clojure code is correct. However, whatever you're using to produce >>> the POST to /openid (i.e. this 'ng-click="signin('google')"' stuff) isn't >>> behaving as you're expecting. I didn't dig into what it's actually doing, >>> but a simple form posting to /openid starts that workflow with Google >>> without a problem: >>> >>> diff --git a/public/landing.html b/public/landing.html >>> index 68c4618..88bfa59 100644 >>> --- a/public/landing.html >>> +++ b/public/landing.html >>> @@ -94,7 +94,10 @@ >>> >>> <hr class="soften"> >>> >>> - >>> + <form method="POST" action="/openid"> >>> + <input type="hidden" name="identifier" value=" >>> https://www.google.com/accounts/o8/id"/> >>> + <input type="submit" value="login with google"/> >>> + </form> >>> </div> >>> >>> Note that the :realm you provide to OpenId needs to correspond to the >>> domain that the site is running on; so, locally, you'll have to set that to >>> e.g. http://localhost:8080, and then to http://mydomainname.com in >>> production, etc. >>> >>> - Chas >>> >>> On Dec 19, 2012, at 9:56 PM, Murtaza Husain wrote: >>> >>> >>> I have changed the parameter name to 'identifier', however I am still >>> hitting the NPE, any ideas? >>> >>> I have placed the code on github - >>> https://github.com/murtaza52/cfaiz.git, if you would like to take a >>> look. >>> >>> Thanks, >>> Murtaza >>> >>> On Thursday, December 20, 2012 12:12:27 AM UTC+5:30, Chas Emerick wrote: >>>> >>>> The parameter name is 'identifier' (not 'openid_identifier') by >>>> default (which you can customize if you want by specifying a >>>> :user-identifier-param option in openid/workflow). >>>> >>>> That said, the NPE you just hit has drawn my attention to an >>>> (unrelated) bug in the openid workflow. Thanks! :-) >>>> >>>> - Chas >>>> >>>> On Dec 19, 2012, at 1:20 PM, Murtaza Husain wrote: >>>> >>>> >>>> Thanks for catching that Aaron ! >>>> >>>> The app currently redirects to the login page now. However I get an >>>> error when I try to post to the "/openid" url with >>>> {"openid_identifier":"https://www.google.com/accounts/o8/id"} as post >>>> data. >>>> >>>> Here is the updated code - >>>> >>>> (ns faiz.handler >>>> (:use compojure.core) >>>> (:require [compojure.handler :as handler] >>>> [compojure.route :as route] >>>> [ring.util.response :as resp] >>>> [me.shenfeng.mustache :as mustache] >>>> [cemerick.friend :as friend] >>>> (cemerick.friend [workflows :as workflows] >>>> [credentials :as creds] >>>> [openid :as openid]))) >>>> >>>> (mustache/deftemplate index (slurp "public/index-async.html")) >>>> >>>> (def index-data {:title "Invoize." :brand "Faiz" :links [{:url >>>> "#/students" :text "Students"} {:url "#/thaalis" :text "Thaalis"}]}) >>>> >>>> (defroutes app-routes >>>> (GET "/" [] (resp/redirect "/login")) >>>> (ANY "/login" [] (resp/file-response "landing.html" {:root "public"})) >>>> (GET "/landing" [] (resp/file-response "landing.html" {:root >>>> "public"})) >>>> (GET "/index" [] (friend/authenticated (index index-data))) >>>> (route/files "/" {:root "public"}) >>>> (route/not-found "Not Found")) >>>> >>>> (def app-routes-with-auth >>>> (-> app-routes >>>> (friend/authenticate >>>> {:workflows [(openid/workflow :openid-uri "/openid" :realm " >>>> http://invoize.com" :credential-fn identity)]}))) >>>> >>>> (def app >>>> (handler/site app-routes-with-auth)) >>>> >>>> >>>> Below is the stacktrace - >>>> >>>> java.lang.NullPointerExceptionopenid.clj:124 >>>> cemerick.friend.openid/workflow[fn]friend.clj:174 >>>> cemerick.friend/authenticate*[fn]core.clj:2432clojure.core/map[fn] >>>> LazySeq.java:42clojure.lang.LazySeq.sval >>>> >>>> Thanks, >>>> Murtaza >>>> >>>> >>>> >>>> >>>> On Wednesday, December 19, 2012 7:37:04 PM UTC+5:30, Aaron Cohen wrote: >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, Dec 19, 2012 at 8:40 AM, Murtaza Husain < >>>>> murtaza...@sevenolives.com> wrote: >>>>>> >>>>>> (defroutes app-routes >>>>>> (GET "/" [] (resp/redirect "/landing")) >>>>>> (GET "/landing" [] (resp/file-response "landing.html" {:root >>>>>> "public"})) >>>>>> (GET "/index" [] (index index-data)) >>>>>> (route/files "/" {:root "public"}) >>>>>> (route/not-found "Not Found")) >>>>>> >>>>>> (def mock-app >>>>>> (-> app-routes >>>>>> (friend/authenticate >>>>>> {:allow-anon? false >>>>>> :login-uri? "/landing" >>>>>> :workflows [(openid/workflow :openid-uri "/openid" :realm " >>>>>> http://invoize.com")]}))) >>>>>> >>>>>> >>>>> >>>>> I'm not fully conversant with all the libraries, but don't you >>>>> actually need to use mock-app somewhere? >>>>> >>>>> >>>>>> (def app >>>>>> (handler/site app-routes)) >>>>>> >>>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> >>> >>> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en