Hello again, FYI, I've just released a new version of the extension, since I had upgraded to a newer version of socialauth dependency and fixed a couple of bugs, but never got to publish it. It might fix the issue you've encountered (together with what I've said in my previous mail). Let me know if this works for you. On 08/02/2012 09:09 AM, Caroline wrote:
Hi,
i installed the "Social Login Extension" and followed the steps to implement it to my wiki.
First i wanted to try the facebook login. Therefore, i created a facebook app and put the app keys in the oauth_consumer.properties file.
My wiki runs on my localhost. So i put "http://localhost:8080" in the configuration of my facebook app.
When i click on the social login button at the xwiki login it redirects me to facebook, where i have to confirm that i want to do this. But when i am redirected to xwiki i get the following error message:
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Script Macro for content [import org.brickred.socialauth.AuthProvider import org.brickred.socialauth.AuthProviderFactory
/** * Displays a form with a single field for a new SSO user to pickup its usernamem */ def outputUsernameCreationForm = { defaultValue, provider -> if (!defaultValue) defaultValue = "" xwiki.ssx.use('XWiki.SocialLogin') println """ {{html clean=false}} <form class="xform" action=${doc.getURL('view')} method="post" id="createUsernameForm"> <div class="centered"> <fieldset class="xwikimessage"> <legend>${msg.get('xwiki.socialLogin.youMustBeNewHere')}</legend> <input type="hidden" name="xaction" value="createProfile" /> <p class="message"> ${msg.get('xwiki.socialLogin.createProfileMessage', [provider])} </p> <dl> <dt>${msg.get('xwiki.socialLogin.pickupUsername')}</dt> <dd><input type="text" name="username" value="${defaultValue}" /></dd> </dl> <div class="buttons">
<input class="button" type="submit" value="${msg.get('xwiki.socialLogin.createMyAccount')}" />
</div> </fieldset> </div> </form> {{/html}} """ }
/** * Authenticate a user and make it remembered in XWiki authentication system */ def authenticateUser = { userDoc -> def password = userDoc.getObject('XWiki.SocialLoginClass').getProperty('password_cache').value def xwikiAuthenticator = [email protected]()[email protected]('xwiki') def psm = xwikiAuthenticator.@persistentLoginManager psm.rememberLogin(request, response, userDoc.fullName, password) response.sendRedirect(xwiki.getURL('Main.WebHome', 'view')) }
// Load oauth properties file def properties = new java.util.Properties() properties.load(com.xpn.xwiki.web.Utils.getComponent("org.xwiki.container.Container").applicationContext.getResourceAsStream("/WEB-INF/oauth_consumer.properties"))
/** * Initiate the OAuth dance with the requested provider */ if(!request.callback && request.provider) {
try {
def provider = AuthProviderFactory.getInstance(request.provider, properties)
println provider
String url = provider.getLoginRedirectURL(doc.getExternalURL('view','callback=1'));
// Store in session request.session.setAttribute("org.brickred.socialauth.AuthProvider", provider);
request.session.setAttribute("org.brickred.socialauth.AuthProvider.hint", request.provider);
response.sendRedirect(url) } catch(Exception e) { println """ {{error}} ${msg.get('xwiki.socialLogin.genericError', [e.message])} {{/error}} """ }
} /** * We've got a response from the provider, let's treat it */ else if (request.callback){
try {
// get the provider back from session def provider = request.session.getAttribute("org.brickred.socialauth.AuthProvider"); def providerID = request.session.getAttribute("org.brickred.socialauth.AuthProvider.hint");
// verify the authentication def profile = provider.verifyResponse(request);
// Search for this user in database def query = services.query.xwql("from doc.object(XWiki.XWikiUsers) as user, doc.object(XWiki.SocialLoginProfileClass) as profile where profile.provider = '" + providerID + "' and profile.validatedId = '" + profile.validatedId + "'")
for (result in query.execute()) { authenticateUser(xwiki.getDocument(result)) }
// Not authenticated/redirected yet ? -> You must be new here // You will have to pick-up a username and dad will create an account for you
// Store the social profile in the session request.session.setAttribute("org.brickred.socialauth.Profile", profile);
// Try to guess what username the user will want to use def guessedUsername = profile.displayName
// Outputs the form to create the username outputUsernameCreationForm(guessedUsername, providerID)
} catch(Exception e) { println """ {{error}} ${msg.get('xwiki.socialLogin.genericError', [e.message])} {{/error}} """ }
} /** * Create a new user profile from the social profile result */ else if (request.xaction && request.xaction == 'createProfile') {
def profile = request.session.getAttribute("org.brickred.socialauth.Profile") def provider = request.session.getAttribute("org.brickred.socialauth.AuthProvider.hint");
def username = request.username if (username && username != '' && !xwiki.exists("XWiki." + username)) { // Everything clear, let's proceed
def userDocName = "XWiki." + username
// Generate a random password password = xwiki.generateRandomString(16)
def propMap = [:] propMap.put("active", "1") propMap.put("email", profile.email) propMap.put("first_name", profile.firstName) propMap.put("last_name", profile.lastName) propMap.put("password", password)
[email protected](username, propMap, xcontext.@context)
def userDoc = xwiki.getDocument(userDocName)
def socialProfile = userDoc.getObject('XWiki.SocialLoginProfileClass', true) socialProfile.set('provider', provider) socialProfile.set('fullName', profile.fullName) socialProfile.set('firstName', profile.firstName) socialProfile.set('lastName', profile.lastName) socialProfile.set('displayName', profile.displayName) socialProfile.set('email', profile.email) socialProfile.set('profileImageURL', profile.profileImageURL) socialProfile.set('gender', profile.gender) socialProfile.set('dob', profile.dob) socialProfile.set('validatedId', profile.validatedId) socialProfile.set('country', profile.country) socialProfile.set('location', profile.location)
def socialPrefs = userDoc.getObject('XWiki.SocialLoginClass', true) socialPrefs.set('password_cache', password) socialPrefs.set('preferred_provider', provider)
userDoc.saveWithProgrammingRights(msg.get('xwiki.socialLogin.updatedSocialProfile'), true)
authenticateUser(userDoc) } else {
if (!username || username == '') println """ {{error}} ${msg.get('xwiki.socialLogin.youMustPickUsername')} {{/error}} """
else if (xwiki.exists('XWiki.' + username)) println """ {{error}} ${msg.get('xwiki.socialLogin.usernameAlreadyTaken')} {{/error}} """
outputUsernameCreationForm("", provider); }
}
/** * View mode */ else { println """ {{info}} ${msg.get('xwiki.socialLogin.nothingToDo')} {{/info}} """ }] at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:178) at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:53) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:198) at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:59) at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transformOnce(MacroTransformation.java:190) at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:135) at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:83) at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:248) at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:124) at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:54) at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:80) at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:38) at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:111) at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:50) at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:67) at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:41) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:901) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:880) at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:911) at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:582) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:567) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:224) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:184) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:105) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1799) at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1739) at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:854) at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:369) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:216) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:311) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:230) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:224) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:184) at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:105) at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:1799) at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:155) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:241) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:116) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:120) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:144) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: msg for class: Script2 at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:122) at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.eval(AbstractJSR223ScriptMacro.java:280) at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:213) at org.xwiki.rendering.macro.script.AbstractJSR223ScriptMacro.evaluateBlock(AbstractJSR223ScriptMacro.java:173) ... 103 more Caused by: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: msg for class: Script2 at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:323) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:116) ... 106 more Caused by: groovy.lang.MissingPropertyException: No such property: msg for class: Script2 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231) at Script2.run(Script2.groovy:117) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) ... 107 more
Do u have any idea, what i can do? I tried so much, but nothing worked.
Thank you a lot Caroline
-- View this message in context: http://xwiki.475771.n2.nabble.com/Social-Login-Extension-Problem-tp7580669.h... Sent from the XWiki- Dev mailing list archive at Nabble.com. _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
-- Peace, —Jerome