Create Entry in Activity Stream from XPages via the Social SDK and OAuth2
====================================================================================================================
http://www.slideshare.net/niklasheidloff/ibm-connect-ad206-ibm-domino-xpages-embrace-extend-integrate slides 24 - 27
1) Create OAuth Tokens
====================================================================================================================
cd /opt/IBMConnections/WebSphere/AppServer/profiles/Dmgr01/bin
./wsadmin.sh -user admin -password passw0rd -port 8889 -lang jython
execfile(‘oauthAdmin.py’)
OAuthApplicationRegistrationService.addApplication(“playground”, “playground”,
"https://qs.renovations.com/SBTPlayground.nsf/xsp/.sbtservice/oauth20_cb")
clientSecret = OAuthApplicationRegisrationService.getApplicationById(“qsSample”).get(‘client_secret’)
print clientSecret
2) faces-config.xml
====================================================================================================================
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<managed-bean>
<managed-bean-name>connections</managed-bean-name>
<managed-bean-class>
com.ibm.sbt.services.endpoints.ConnectionsOAuth2Endpoint
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>url</property-name>
<value>https://qs.renovations.com:444</value>
</managed-property>
<managed-property>
<property-name>serviceName</property-name>
<value>SBTK</value>
</managed-property>
<managed-property>
<property-name>appId</property-name>
<value>playground</value>
</managed-property>
<managed-property>
<property-name>consumerKey</property-name>
<value>playground</value>
</managed-property>
<managed-property>
<property-name>consumerSecret</property-name>
<value>XKFm2qpQCw4UlYaahkdoNgGBR8hODlexwTCW42KLHehwzAYNbgOJHbsoyIZ7</value>
</managed-property>
<managed-property>
<property-name>authorizationURL</property-name>
<value>https://qs.renovations.com:444/oauth2/endpoint/connectionsProvider/authorize</value>
</managed-property>
<managed-property>
<property-name>accessTokenURL</property-name>
<value>https://qs.renovations.com:444/oauth2/endpoint/connectionsProvider/token</value>
</managed-property>
<managed-property>
<property-name>forceTrustSSLCertificate
</property-name>
<value>true</value>
</managed-property>
</managed-bean>
<!--AUTOGEN-START-BUILDER: Automatically generated by IBM Domino Designer. Do not modify.-->
<!--AUTOGEN-END-BUILDER: End of automatically generated section-->
</faces-config>
3) Java Code
====================================================================================================================
package org.openntf.connections.activitystream.samples;
import com.ibm.sbt.services.client.activitystreams.ActivityStreamService;
import com.ibm.sbt.services.client.connections.communities.CommunityService;
import com.ibm.commons.util.io.json.JsonJavaFactory;
import com.ibm.commons.util.io.json.JsonJavaObject;
import com.ibm.commons.util.io.json.JsonParser;
import java.util.UUID;
import java.util.HashMap;
public class AddToActivityStream {
static public void createEntryInCommunityActivityStreamURL(String nId, String text) throws Exception {
JsonJavaObject jsonObject = getJSONForActivityStreamEntry(
"/homepage/nav/common/images/iconProfiles16.png",
"Generator ID",
"Generator display name",
"http://xpages.info",
"@me",
"Collaboration Today News",
"I've posted a new entry on CollaborationToday.info.",
text,
"note",
UUID.randomUUID().toString(),
"Object display name",
null,
null,
"http://qs.renovations.com/ctqs2.nsf/entry.xsp?nid=" + nId,
null);
ActivityStreamService service = new ActivityStreamService();
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
String communityId = "f923c5f4-12c9-4b0f-9e1c-3c7bb5bf7916"; // XPages community
service.postEntry("urn:lsid:lconn.ibm.com:communities.community:" + communityId, "@all", "@all",
jsonObject, headers);
String debug = "";
}
static public void createEntryInUserActivityStreamURL() throws Exception {
JsonJavaObject jsonObject = getJSONForActivityStreamEntry(
"/homepage/nav/common/images/iconProfiles16.png",
"Generator ID",
"Generator display name",
"http://xpages.info",
"@me",
"Collaboration Today News",
"I've posted a new entry on CollaborationToday.info.",
"Collaboration Today News",
"note",
UUID.randomUUID().toString(),
"Object display name",
null,
null,
"http://collaborationtoday.info",
"66D5E6C6-9C44-A694-4825-7A700025768E"); // user id from Anna Bauer
ActivityStreamService service = new ActivityStreamService();
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
service.postEntry(jsonObject, headers);
}
static public JsonJavaObject getJSONForActivityStreamEntry(
String generatorImage, String generatorId, String generatorDisplayName,
String generatorUrl, String actorId, String title, String content, String objectSummary,
String objectType, String objectId, String objectDisplayName, String embedGadget,
String embedContext, String embedUrl, String deliverTo) throws Exception {
StringBuilder sb = new java.lang.StringBuilder();
sb.append("{\"generator\": {");
sb.append("\"image\": { \"url\": \"" + generatorImage + "\"},");
sb.append("\"id\": \"" + generatorId + "\",");
sb.append("\"displayName\": \"" + generatorDisplayName + "\",");
sb.append("\"url\": \"" + generatorUrl + "\""); sb.append("},");
sb.append("\"actor\": { \"id\": \"" + actorId + "\" },");
sb.append("\"verb\": \"post\",");
sb.append("\"title\": \"" + title + "\",");
sb.append("\"content\": \"" + content + "\",");
sb.append("\"updated\": \"" + new java.util.Date().toString()+ "\",");
sb.append("\"object\": {");
sb.append("\"summary\": \"" + objectSummary + "\",");
sb.append("\"objectType\": \"" + objectType + "\",");
sb.append("\"id\": \"" + objectId + "\",");
sb.append("\"displayName\": \"" + objectDisplayName + "\""); sb.append("},");
sb.append("\"openSocial\":{"); sb.append("\"embed\": {");
if (embedGadget != null) {
sb.append("\"gadget\": \"" + embedGadget + "\",");
sb.append("\"context\": " + embedContext + "}");
}
else {
sb.append("\"url\": \"" + embedUrl + "\"}");
}
if (deliverTo != null) {
sb.append(",\"deliverTo\" : [{ \"objectType\" : \"person\", \"id\" : \"" + deliverTo + "\"}]");
}
sb.append("}}");
String input = sb.toString();
JsonJavaFactory factory = JsonJavaFactory.instanceEx;
JsonJavaObject jsonObject = (JsonJavaObject) JsonParser.fromJson(factory, input);
return jsonObject;
}
}