I've been playing with Ringside's Social Application Server. In my initial post
on the subject I mentioned I was having trouble with the file upload. I
got that put to bed this evening. As it turns out, Facebook inserts
some hidden fields into form tags (see doc) such as the Facebook user, API key, session key, and app ID. Ringside doesn't insert those fields.
Why
does this matter? When you post a multipart form (i.e., a file upload)
in a Facebook app, you don't post to the canvas URL, you post to the
application directly, which in this case is an Alfresco web script. All
other posts go through the canvas URL and by the time they arrive at
the web script, the request has the parameters it needs to make
Alfresco's Facebook web script runtime happy. In Ringside, the file
upload post lacks that context because the hidden fields are missing.
Alfresco needs those hidden fields--without them, the script has no
idea which Facebook app is posting the data.
The fix was easy
enough. I just inserted the hidden fields into the form via the
Freemarker template (adddocdialog.post.fbml.ftl). The "facebook" root
object knows the user, API, and app ID because the form gets displayed
as the result of a canvas post.
Here are the hidden fields I added to form in the Freemarker template:
<input
type="hidden" name="fb_sig_user" value="${facebook.user}"
/><input type="hidden" name="fb_sig_session_key"
value="${facebook.sessionKey}" /><input type="hidden"
name="fb_sig_api_key" value="${facebook.apiKey}" />
The
only other change I made was to comment out the postUserAction call in
adddoc.post.js. I'm not sure that's supported yet in Ringside. If it
is, there's some other problem causing it to choke.
So, other than the user action post, the Alfresco Document Library Facebook app is fully-functional in Ringside.
The
next step is deeper integration into the web client. I know Alfresco is
moving toward more social networking features in the 3.x release, but
integrating with Ringside via web scripts might be a way to get there
faster with more functionality.







