Hi Caroline,

This extension is not going to work for a local wiki, since it requires a two way communication (Facebook, or any other end point needs to be able to communicate with the server) ; while here the endpoint wouldn't know about localhost. This is how OAuth works. So the first thing to do is to expose your wiki to a URL reachable from outside. I don't know if this is going to fix your issue or not, but that's a pre-requisite anyway.


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.html
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

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to