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 =
xwiki.@xwiki.getAuthService().@authenticators.get('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)
xwiki.(a)xwiki.createUser(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.…
Sent from the XWiki- Dev mailing list archive at
Nabble.com.
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs