SlideShare ist ein Scribd-Unternehmen logo
1 von 71
JMP103 : Extending Your
App Arsenal With
OpenSocial

Ryan Baxter | Software Engineer | IBM
Yun Zhi Lin | Software Engineer | IBM

Ā© 2014 IBM Corporation
Please Note
IBMā€™s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBMā€™s sole
discretion.
Information regarding potential future products is intended to outline our general product direction and it should not be
relied on in making a purchasing decision.
The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver
any material, code or functionality. Information about potential future products may not be incorporated into any contract.
The development, release, and timing of any future features or functionality described for our products remains at our sole
discretion

Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment.
The actual throughput or performance that any user will experience will vary depending upon many factors, including
considerations such as the amount of multiprogramming in the userā€™s job stream, the I/O configuration, the storage
configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve
results similar to those stated here.

2
Credit
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

3

IBM Notes Social Edition
IBM Domino Social Edition
IBM iNotes Social Edition
IBM Connections
IBM Social Business Toolkit
About Us
ī€Š
ī€Š
ī€Š
ī€Š

ī€Š
ī€Š
ī€Š

4

IBMer for 5 years
OpenSocial (and open source) enthusiast
Notes Java UI APIs, IBM Social Business Toolkit
@ryanjbaxter, http://ryanjbaxter.com
IBMer for 7 years
Notes Widgets and OpenSocial developer
XPages and Eclipse plugin development
Agenda
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

5

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
OpenSocial
ī€Š

ī€Š

6

Social APIs and Mini Applications
(Gadgets)
IBM has a leadership role including
ā€“
On the Board of Directors
ā€“
Committers on Apache Shindig
ā€“
Has been instrumental in drafting
the OpenSocial 2.0 & 2.5
specification
ā€“
Invented and gave to the
community Embedded
Experiences and many, many
more capabilities
ā€“
Provided enterprise extensions

Implementations Include: Cisco, SAP, Jive,
Atlassian, IBM SmartCloud, Google,
Yahoo, MySpace, LifeRay, Oracle,
Magneto, Tibco Tibbr, Surfnet, Paypal . . .

SmartCloud, IBM Connections, IBM
Notes/DominoĀ®, Rational Team ConcertTM,
Sterling, IBM Business Process Manager...
Why Use OpenSocial?
ī€Š

ī€Š

IBM sees value in OpenSocial because it offers two very important things to IBM, its
partners, and its customers
ā€“
An application model based on modern web standards that easily isolates third party
code
ā€“
APIs for interacting with and creating social data (we still have a long way to go with
this one)
Cross product integration with Notes, iNotes, and Connections
ā€“
Integrate your application into one or all of these products
ā€“
Stand-alone (web) applications
ā€“
Embedded within an envelope, i.e., email or activity entry
ā€“

ī€Š

7

Access to social data and data models from Connections and SmartCloud
ā€“
Connections 4 activity streams API
ā€“
SmartClouds person and contacts APIs
Sample Gadget XML
<?xml version="1.0" encoding="UTF-8" ?>
<Module specificationVersion='2'>
<ModulePrefs title="Acme Airlines">
<!-- Features provide sets of functionality to the gadget
<Require feature="dynamic-height" />
<Require feature="embedded-experiences" />
</ModulePrefs>
<!-- Content sections are the UI of the gadget -->
<Content type="html" view="default, home">
<![CDATA[
<!--HTML, CSS, and JavaScript go here -->
]]>
</Content>
<Content type="html" view="embedded" href="ee.html"></Content>
</Module>
8

-->
The Basics
ī€Š

ī€Š

9

ModulePrefs
ā€“
The gadget's ModulePrefs element contains basic information about the gadget
ā—
Title, author, description, icon
ā—
Features are also placed in the ModulePrefs element
ā€“ Features provide a set of functionality and sometimes APIs to the gadget
ā—
Message Bundles can be added to provide translated strings for your gadget
Content Sections
ā€“
Content sections contain the UI and business logic for your gadget
ā—
You can have multiple content sections in one gadget XML
ā—
The HTML, CSS, and JavaScript of your gadget can either be inside the content
section or externally in a separate file
ā€“
Different content sections can be distinguished via the view attribute
Gadget Views
ī€Š

ī€Š

ī€Š
ī€Š

10

Gadget views originally were used to distinguish between the amount of real-estate
available to a gadget
ā€“
Home = little real-estate
ā€“
Canvas = large amount of real-estate
Since OpenSocial 2.0 we have been moving more towards views indicating different uses
ā€“
Embedded view for embedded experiences
ā€“
Dialog views for when a gadget is opened in a dialog
Content sections with the same view name will be concatenated together
Gadgets can switch views programmatically and find out what view is currently rendered
ā€“
gadgets.views.requestNavigateTo(viewName)
ā€“
gadgets.views.getCurrentView()
Gadget Preferences
ī€Š

ī€Š

ī€Š

11

Any application is likely to have user preferences
to allow the user to customize portions of the
application
Gadget preferences are specified in UserPref
elements in the gadget XML
ā€“
Strings, Booleans, Enums, and Lists all
specified in the type attribute
ā€“
Display name attribute shows in the UI
ā€“
Name attribute can be used to access the
preference within your code
ā€“
You can also set a default value for a
preference
Get and set preferences via gadgets.Prefs
ā€“
Require the feature setpefs when setting
preferences
Gadget Preferences Example
<UserPref name="hello_pref" display_name="Name" default_value="World"
datatype="string" required="true"/>
<UserPref name="number_pref" display_name="Number" default_value="0"
datatype="string" required="true"/>
<UserPref name="list_pref" display_name="List" default_value="foo|bar|
foobar" datatype="list" required="true"/>
<UserPref name="boolean_pref" display_name="Boolean"
default_value="false" datatype="bool" required="true"/>
<UserPref name="enum_pref" display_name="Enum" default_value="Red"
datatype="enum" required="true">
<EnumValue value="Red" display_value="Red"/>
<EnumValue value="Green" display_value="Green"/>
<EnumValue value="Blue" display_value="Blue"/>
</UserPref>
12
Developing OpenSocial Gadgets
ī€Š
ī€Š

ī€Š

13

The first step to building OpenSocial gadgets is setting up a development environment
OpenSocial Explorer
ā€“
An open source project from the OpenSocial Foundation meant to help developers get
started building OpenSocial gadgets.
ā€“
Contains sample gadgets and allows developers to modify and create new gadgets
IBM Social Business Toolkit Playground
ā€“
You can do everything you can do in the OpenSocial Explorer within the
Playground...and MORE!
ā€“
Contains all the same samples plus sample gadgets that show how to integrate with
SmartCloud and Connections
ā€“
Easily test your embedded experiences in emails and activity stream entries
OpenSocial Explorer

14
IBM Social Business Toolkit Playground ā€“ On Greenhouse

15
DEMO
16
Getting Started Writing JavaScript
ī€Š
ī€Š

ī€Š

17

Use your favorite JavaScript library
Just like any other web app you don't want to begin running your business logic before the
app has completely loaded
gadgets.util.registerOnLoadHandler(function)
ā€“
When the function passed to this API is called the gadget has completely loaded
ā€“
Similar to JQuery and Dojo's ready functions
ā€“
You can use those instead if you are using those libraries
Making REST API Calls
ī€Š
ī€Š

All web applications need to make some kind of API calls and gadgets are no different
Use gadgets.io.makeRequest
ā€“
Asynchronous
ā€“
Takes a URL, parameters object, and callback function
ā€“
Supports OAuth endpoints
ā€“
DO NOT USE OTHER LIBRARIES' XHR METHODS

var params = {};
params[gadgets.io.RequestParameters.METHOD]
=gadgets.io.MethodType.GET;
params[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.C
ontentType.JSON;
var callback = function(response){
...
};
gadgets.io.makeRequest('http://example.com/api/foo', callback,
params);
18
OAuth
ī€Š

ī€Š

ī€Š
ī€Š
ī€Š

OpenSocial uses OAuth for making protected API calls
ā€“
Support for OAuth 1.0a and 2.0
OAuth stands for OPEN AUTHORIZATION not OPEN AUTHENTICATION
ā€“
Authentication technologies may be used when authorizing
OAuth is very easy to use within a gadget, most of the hard work is done by the container
Use makeRequest and simply specify which OAuth version to use
The OAuth services used within the gadget need to be registered with the container
Request
Acme Gadget
Approval

19

Browser
Do you want to allow
Acme Gadget access
to your data?
YES NO
OAuth 1.0a in The Gadget XML
ī€Š
ī€Š

Service name must match what is registered in the container
URLs come from the provider you are authenticating with
<OAuth>
<Service name="my service">
<Request url="http://provider.com/authorize"/>
<Access url="http://provider.com/accessToken"/>
<Authorization url="http://provider.com/authorize"/>
</Service>
</OAuth>

20
OAuth 1.0a in The Gadget XML
ī€Š
ī€Š

Service name must match what is registered in the container
URLs come from the provider you are authenticating with
<OAuth>
<Service name="my service">
<Request url="http://provider.com/authorize"/>
<Access url="http://provider.com/accessToken"/>
<Authorization url="http://provider.com/authorize"/>
</Service>
</OAuth>

21
OAuth 2.0 in The Gadget XML
ī€Š

OAuth 2.0 is simpler, all URLs are configured on the container.
ā€“
Service name needs to match what you register in the container
ā€“
Scope indicates the API set you plan on accessing
<OAuth2>
<Service name="service name" scope="ProviderScope">
</Service>
</OAuth2>

22
Using OAuth in makeRequest
ī€Š

In the parameters passed to makeRequest indicate you are using OAuth 1.0a or 2.0
ā€“
gadgets.io.AuthorizeType.OAUTH2
ā€“
gadgets.io.AuthorizeType.OAUTH
ā€“

ī€Š

23

Require the feature ā€œoauthpopupā€
ā€“
This feature can be used to open the popup window for the user to enter their
credentials
ā€“
Lets the gadget know when the OAuth dance is complete
OAuth makeRequest Example
var params = {};
params[gadgets.io.RequestParameters.AUTHORIZATION] =
gadgets.io.AuthorizationType.OAUTH2;
params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = 'serviceName';
gadgets.io.makeRequest('url', function(response) {
if (response.oauthApprovalUrl) {
var onOpen = function() {};
var onClose = function() {};
var popup = new gadgets.oauth.Popup(response.oauthApprovalUrl, null, onOpen,
onClose);
var click = popup.createOpenerOnClick();
click();
} else if (response.data) {
//We have data so lets use it!
} else {
gadgets.error('something went wrong');
}
}, params);
24
Interacting With The Container
ī€Š

ī€Š

ī€Š

ī€Š

25

As of OpenSocial 2.0 gadgets can now interact with the container they are rendered in
ā€“
WARNING: These may not be supported completely in all containers - even every IBM
Container
Breaking Out Of The Box
ā€“
Gadgets are rendered in an iFrame and they used to be confined to that frame in the
browser
ā€“
With the open-views APIs gadgets can render other gadgets and URLs in new tabs,
windows, dialogs, etc
Contributing To The UI
ā€“
Action contributions allows your gadget to contribute to the toolbar and menus of the
container
ā€“
This is very similar to action contributions in Eclipse plugin development
Understanding What Is Selected
ā€“
Gadgets can also listen for selection in Notes and iNotes
ā€“
Emails, Contacts, and Files
DEMO
26
Embedded Experiences
ī€Š

27

Changing the way you get notifications
ā€“
The goal is to make notifications more useful and interactive
ā€“
Supported in email and activity streams
ā—
IBM Connections, IBM Connections Mail, IBM Notes 9, IBM iNotes 9
ā—
JSON + XML
Notifications Today
Activity Entry

Action Taken
In Your App

Standard
MIME Email

28
Notifications With Embedded Experiences
Activity
Entry

Action
Taken In
Your App

EE Data
Model

Gadget
Standard
MIME
Email
Your App

29
Something Of Importance Took Place!
ī€Š

Embedded experiences are almost always
generated due to an action that took place in
an app
ā€“
Someone completed a task
ā€“
Someone sent a survey to a group of
people
ā€“
A travel request was submitted
ā€“
A lead was entered in a CRM system
ā€“

ī€Š

30

Now that the action took place you want to let
a group of people know about it
ā€“
BE SOCIAL!

Your APP

Action Taken
In App
How do you want to let people know about it?
ī€Š

ī€Š

ī€Š

Traditionally emails were sent
ā€“
Still applicable today, many apps still do this
In a social network, emails are not the primary
medium for communication
ā€“
Almost all social networks have an activity
stream so we should post it there
Gadget EE

{
ā€œgadgetā€ : ā€œhttp://acme.com/gagdet.xmlā€,
ā€œcontextā€ : {
ā€œidā€ : 123
}
}
ī€Š

URL EE

{ā€œurlā€ : ā€œhttp://domino.com/myxpage.xspā€}
31

Activity Entry

EE Data
Model

Standard MIME
Email
Active Notifications
ī€Š

With embedded experiences,
notifications are no longer static
ā€“
Active content allows your
notifications to never go stale and
always be up to date
Gadget

ā€“
ā€“

No need to leave your client, stay
where you are and get your work
done

ā€“
ī€Š

32

The data used in your notifications is
unlimited, you have access to anything

Your App
Email Embedded Experience
From: notifications@socialnetwork.com
To: johndoe@example.com
Subject: Social Network: Mary Has Commented On Your Status
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="XXXXboundary text"
Mary has commented on your status.
--XXXXboundary text
Content-Type: text/plain
Mary has commeneted on your status.
--XXXXboundary text
Content-Type: text/html
<html>
<!-- HTML representation here -->
</html>
--XXXXboundary text
Content-Type: application/embed+json
{
"gadget" : "http://www.socialnetwork.com/embedded/commentgadget.xml",
"context" : 123
}
33
Activity Stream Embedded Experience
{
"postedTime": "2011-02-10T15:04:55Z",
"actor": {...},
"verb": "post",
"object" : {...},
"openSocial" : {
"embed" : {
"gadget" : "http://example.org/AlbumViewer.xml",
"context" : {
"albumName": "Germany 2009",
"photoUrls": [...]
}
}
}
}
34
DEMO
35
Agenda
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

36

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
How Does OpenSocial Integrate Into IBM Connections?
ī€Š

ī€Š

ī€Š
ī€Š

ī€Š
ī€Š

37

Leveraging the existing widgets framework
ā€“
OpenSocial is just a new type of widget, just like iWidgets
OpenSocial gadgets available on your homepage
ā€“
In the activity stream
ā€“
On the right hand side of your activity stream homepage
ā€“
In the ā€œMy Pageā€ of your homepage
Connections Mail supports embedded experiences in email
OpenSocial gadgets can also extend the share box
ā€“
Allows you to integrate other sharing capabilities right into Connections
Connection's REST API and data model follows the OpenSocial standard
OpenSocial gadgets can interact with their containers
ā€“
Contribute actions for ShareBox integration
ā€“
Open itself, Embedded Experiences, and URLs as dialogs
Activity Streams Keep Your Users Up To Date
ī€Š

ī€Š

ī€Š

38

REST API and data model backed by the
OpenSocial standard
ā€“
JSON data model - easy to use in your web
apps
3rd party apps can post entries to the activity
stream
ā€“
Inside and outside of Connections
Integrate the Connections activity stream into
your apps
ā€“
This is how we integrate the activity stream
into Notes
ā€“
If your app is an OpenSocial container you
can render embedded experiences too!
Extending The Share Dialog
ī€Š

ī€Š

39

The share dialog allows you to share content
from anywhere in Connections
ā€“
By default you can update your status or
upload a file
The share dialog is extensible using OpenSocial
gadgets
ā€“
Take advantage of OpenSocial's actions
feature
Connections Mail
ī€Š
ī€Š

40

Connections Mail, like Notes and iNotes, supports embedded experiences as well
The same embedded experience you build for the activity stream will work in mail
Deploying OpenSocial Gadgets In Connections
ī€Š
ī€Š

41

Only Homepage admins can deploy gadgets
Gadgets must be added to the widget catalog
in Connections
ā€“
Security
ā—
Restricted or Trusted (SSO)
ā€“
UI Integration points for the Share dialog
ā€“
Proxy access
ā—
Only outside the intranet
ā—
Everything
ā—
Custom
ā€“
OAuth service mappings
Registering OAuth Clients For Gadgets In Connections
ī€Š

ī€Š

42

You must register OAuth clients for gadgets to use in Connections if a gadget is using OAuth
ā€“
This is a two step process done via the wasadmin console, you must register an OAuth
provider and then register an OAuth client
ā—
A provider may be used by multiple clients. For example Google, Facebook,
Twitter, DropBox etc.
ā€“ wsadmin>NewsOAuth2ConsumerService.registerProvider("provider123",
"standard", "true", "false", "http://example.com/oauth/authorization",
"https://example.com/oauth/token")
ā—
A client gets bound to a gadget and points to a provider.
ā€“ You specify the client ID and secret obtained from the provider for your gadget
ā€“ wsadmin>NewsOAuth2ConsumerService.registerClient("client123",
"provider123", "confidential", "code", "my-client", "my-secret",
"https://connections.com/connections/opensocial/gadgets/oauth2callback")
After the clients have been registered you can bind them via wsadmin commands or via the
Homepage administration UI
DEMO
43
Agenda
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

44

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
How Does OpenSocial Integrate Into IBM Notes and iNotes?
ī€Š

ī€Š

ā—

ī€Š
45

Leveraging the existing My Widgets framework
ā€“
OpenSocial is just a new type of widget, just like Google Gadgets or Web Page widgets
OpenSocial gadgets are available in both Notes and iNotes
ā€“
In the sidebar
ā€“
In tabs
ā€“
In floating (modeless) windows
ā€“
In new windows (Notes only)
ā€“
In Mail as Embedded Experiences
Wire LiveText to OpenSocial gadgets
ā€“
The recognized content is passed through gadget preference
ā€“
By default launches in a floating window
ā€“
Can be configured to open in tab, sidebar or new window
How Does OpenSocial Integrate Into IBM Notes and iNotes?
ī€Š

46

OpenSocial gadgets can interact with their containers
ā€“
Contribute actions
ā—
To top-level menus and toolbars in Notes
ā—
To the context menu for mail messages, contacts, attachments (Notes only), and
LiveNames (Notes only)
ā€“
Contribute OpenSearch search engines to the Notes search center
ā€“
Listen for and publish selection
ā€“
Open itself, Embedded Experiences, and URLs in new windows, tabs, floating windows
and the sidebar
OpenSearch
ī€Š

Use OpenSearch APIs to contribute to the Notes search center
<Optional feature="opensearch">
<Param name="opensearch-description">
<![CDATA[
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" >
<ShortName>CNN.com</ShortName>
<Description>CNN.com Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<SearchForm>http://search.cnn.com/</SearchForm>
<Url type="text/html" method="get"
template="http://www.cnn.com/search/?query={searchTerms}">
</Url>
</OpenSearchDescription>
]]>
</Param>
</Optional>

ī€Š

47

More information in the OpenSocial spec
ā€“
http://opensocial-resources.googlecode.com/svn/spec/2.5/CoreGadget.xml#OpenSearch
Creating OpenSocial Widgets in Notes and iNotes
ā—

48

Notes client provides wizards to create OpenSocial Widgets from gadgets
Managing OpenSocial Widgets in Notes and iNotes
ī€Š

ī€Š

ā—

49

Widget Catalog database is used to manage OpenSocial Gadgets in Notes and iNotes
ā€“
OpenSocial widget is not usable until it's published to catalog and approved by
administrator
During the approval process, administrators will configure
ā€“
Proxy settings ā€“ required
ā€“
OAuth consumer information ā€“ required only if a gadget need them
A secure credential store database is used to manage sensitive information
Creating Widgets for URL Embedded Experience in
Notes/iNotes
ī€Š

50

You need to create a Web Page widget and enable it for embedded experiences
ā€“
Make the Embedded Experiences URL generic to accommodate all sub-pages of the
application
ā€“
Wild cards are allowed
Deploying OpenSocial Widgets in Notes and iNotes
ī€Š

ī€Š

ī€Š

51

Approved widgets need to be installed
in Notes and iNotes
Widgets can be pushed to end users
by policy settings
ā€“
This is the recommended way to
deploy widgets
End users can also install additional
widgets from catalog by themselves
DEMO
52
Agenda
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

53

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
WARNING!!!
Proceed With Caution!
54
Using the IBM SBT To Render Gadgets
ī€Š

ī€Š

ī€Š

55

Using some of the OSGi bundles found in the IBM SBT you can not render gadgets within
your own apps
ā€“
You can allow users to integrate into your applications using gadgets
ā€“
You can build a dashboard based on gadgets
ā€“
You can embed the Connections Activity Stream gadget within your application
The OSGi bundles from the SBT provide a service that other apps running on Domino can
use to render their own gadgets
Supports both WABs (Web Application Bundles) and XPages on Domino
ā€“
You can use extension points to contribute ā€œcontainersā€ to the OpenSocial service
running on the Domino server
Key Concepts
ī€Š
ī€Š

ī€Š

56

Depend on com.ibm.sbt.opensocial.domino or com.ibm.xsp.opensocial
To render gadgets within your own application you must supply at least one instance of a
class that implements ContainerExtPoint
ā€“
Can be registered via the extension point com.ibm.sbt.opensocial.domino.container
ā—
This should be used by OSGi bundles
ā€“
Can be registered by calling ContainerExtPointManager.registerContainers
ā—
This should be used by XPage apps
Then you need to include a script tag in your application to include the OpenSocial
Container JS
ā€“
[domino server]/osplayground/gadgets/js/container:embedded-experiences:openviews:actions:selection.js?c=1&debug=1&container=sampleId
ā€“
The container id must match the one from your ContainerExtPoint
Sample Extension Point
<extension
point="com.ibm.sbt.opensocial.domino.container">
<container
class="com.acme.container.MyContainerExtPoint">
</container>
<container
class="com.acme.container.MySecondContainerExtPoint">
</container>
</extension>

57
Security Tokens
ī€Š

ī€Š
ī€Š

A security token is an encrypted string which contains information about the user, container,
and app
It is required in order to render and gadgets in your application
GET /sbtos/container/stgen

Parameter Name
c

The domain of the container

i

The app ID. Any unique ID for your app will do.

m

The module ID, should always be 0.

u

58

The ID of the container.

d

ī€Š

Description

The app url.

Response: {ā€œtokenā€ : ā€œ123ā€, ā€œttlā€ : 5678}
DEMO
59
Agenda
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

60

Introduction to OpenSocial
OpenSocial in IBM Connections
OpenSocial in IBM Notes and iNotes Social Edition 9.0
The Social Business Toolkit and OpenSocial Gadgets
XPages and OpenSocial
XPages and OpenSocial
ī€Š

ī€Š

61

XPages and Embedded Experience mail
ā€“
XPages can be embedded in mail directly by using a URL embedded experience
ā€“
Gadget XML can be put in an NSF and access application data via XPages REST API
ā€“
It's easy to send embedded experience emails from XPage apps
XPages and Activity Streams
ā€“
Support to post activities with embedded experiences to activity streams
ā€“
Support to read activity stream data in XPages apps
Creating Embedded Experience Emails Using Notes.jar

62
XPages Simple Action To Send Embedded Experience
Emails
ī€Š

New ā€œSend Mailā€ simple action
ā€“
Available in 9.0
ā€“
Provides an easy way to send mails and
supports Embedded Experience mail
ā€“
You can either compose JSON by
yourself or XPages will compose it
based on your input.
ā€“

63
Leveraging SSO For XPage Embedded Experiences
ī€Š

ī€Š

ī€Š

We do not want users to log in again when opening a XPage embedded experience
The mail server and the server hosting the XPages app must have multi-server SSO
enabled
ā€“
For iNotes users, the servers must be in same SSO domain
ā€“
For Notes users, a managed account needs to be created for the server hosting the
XPages application
ā—
This can be pushed via policy
In the case of XPage embedded experiences in the Connections activity stream, the
Connections server must be in the same SSO domain as the Domino server hosting the app
ā€“

If you want to integrate a classic web based Domino application with embedded experience, the
above steps apply as well.

64
DEMO
65
Q&A
66
Resources
ī€Š
ī€Š
ī€Š
ī€Š
ī€Š

ī€Š

ī€Š

ī€Š
ī€Š

ī€Š

67

OpenSocial Tutorials: https://opensocial.atlassian.net/wiki/display/OS/Home
OpenSocial Explorer: http://opensocial.github.io/explorer/download.html
Apache Shindig: http://shindig.apache.org
IBM Social Business SDK: http://ibmsbt.openntf.org/
IBM Social Business Toolkit Playground:
https://greenhouse.lotus.com/sbt/SBTPlayground.nsf/
IBM Domino 9.0 Social Edition OpenSocial Component Deployment Cookbook:
http://www-10.lotus.com/ldd/dominowiki.nsf/dx/IBM_Domino_9.0_Social_Edition_OpenSocial_D
Developing Gadgets For Connections:
https://www.ibm.com/developerworks/lotus/documentation/osgadgetconnections4/index.html
OpenSocial Specs: https://opensocial.atlassian.net/wiki/display/OSD/Specs
OAuth Client Registration:
http://www-10.lotus.com/ldd/lcwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.0+d
Activity Streams API:
http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+
Resources
ī€Š

ī€Š

68

OpenSocial Gadgets In The Playground:
https://github.com/OpenNTF/SocialSDK/wiki/OpenSocial-Gadgets-In-The-Playground
Building OpenSocial Containers Using The SBT:
https://github.com/OpenNTF/SocialSDK/wiki/Building-Your-Own-OpenSocial-Container
Acknowledgements and Disclaimers
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither
intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information
contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise
related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or
its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and
performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you
will result in any specific sales, revenue growth or other results.

Ā© Copyright IBM Corporation 2014. All rights reserved.
ļ‚§ U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
ļ‚§ IBM, the IBM logo, ibm.com, IBM Connections, IBM Notes Social Edition, IBM iNotes Social Edition, IBM Domino Social Edition are trademarks or registered trademarks of International
Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a
trademark symbol (Ā® or ā„¢), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be
registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at ā€œCopyright and trademark informationā€ at
www.ibm.com/legal/copytrade.shtml
Other company, product, or service names may be trademarks or service marks of others.

69
Engage Online
ī€Š

ī€Š

SocialBiz User Group socialbizug.org
ā€“ Join the epicenter of Notes and Collaboration user groups
Follow us on Twitter
Engage
ā€“ @IBMConnect and @IBMSocialBiz

Online

ī€Š

LinkedIn http://bit.ly/SBComm
ā€“ Participate in the IBM Social Business group on LinkedIn:

ī€Š

Facebook https://www.facebook.com/IBMSocialBiz
ā€“ Like IBM Social Business on Facebook

ī€Š

Social Business Insights blog ibm.com/blogs/socialbusiness
ā€“ Read and engage with our bloggers

70
ļ‚§ Access Connect Online to complete your session surveys using any:
ā€“ Web or mobile browser
ā€“ Connect Online kiosk onsite

71

Weitere Ƥhnliche Inhalte

Was ist angesagt?

BlackBerry WebWorks
BlackBerry WebWorksBlackBerry WebWorks
BlackBerry WebWorksBhasker Thapan
Ā 
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Zohar Babin
Ā 
RIM Casual Meetup - Bandung #DevIDBdg
RIM Casual Meetup - Bandung #DevIDBdgRIM Casual Meetup - Bandung #DevIDBdg
RIM Casual Meetup - Bandung #DevIDBdgZiyad Bazed
Ā 
IBM Connect2014 JMP106
IBM Connect2014 JMP106IBM Connect2014 JMP106
IBM Connect2014 JMP106Thomas Evans
Ā 
Kaltura, open source video
Kaltura, open source videoKaltura, open source video
Kaltura, open source videoBart Gysens
Ā 
Training on webwroks1
Training on webwroks1Training on webwroks1
Training on webwroks1sumeettechno
Ā 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiCodeOps Technologies LLP
Ā 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise DemandsWebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise DemandsIan Robinson
Ā 
DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - DarwinoJesse Gallagher
Ā 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleApigee | Google Cloud
Ā 
Ten Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevTen Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevNiklas Heidloff
Ā 
Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Jeff Haynie
Ā 
SD Forum Java SIG - Service Oriented UI Architecture
SD Forum Java SIG - Service Oriented UI ArchitectureSD Forum Java SIG - Service Oriented UI Architecture
SD Forum Java SIG - Service Oriented UI ArchitectureJeff Haynie
Ā 
Creating MVC Application with backbone js
Creating MVC Application with backbone jsCreating MVC Application with backbone js
Creating MVC Application with backbone jsMindfire Solutions
Ā 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationJesse Gallagher
Ā 
Rapid Application Development in the Cloud and On-Premises with Docker
Rapid Application Development in the Cloud and On-Premises with DockerRapid Application Development in the Cloud and On-Premises with Docker
Rapid Application Development in the Cloud and On-Premises with DockerNiklas Heidloff
Ā 
Revised Adf security in a project centric environment
Revised Adf security in a project centric environmentRevised Adf security in a project centric environment
Revised Adf security in a project centric environmentJean-Marc Desvaux
Ā 
Architecting iOS Project
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS ProjectMassimo Oliviero
Ā 
INTERNSHIP REPORT
INTERNSHIP REPORTINTERNSHIP REPORT
INTERNSHIP REPORTMufaddal Vasi
Ā 

Was ist angesagt? (20)

BlackBerry WebWorks
BlackBerry WebWorksBlackBerry WebWorks
BlackBerry WebWorks
Ā 
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Ā 
RIM Casual Meetup - Bandung #DevIDBdg
RIM Casual Meetup - Bandung #DevIDBdgRIM Casual Meetup - Bandung #DevIDBdg
RIM Casual Meetup - Bandung #DevIDBdg
Ā 
IBM Connect2014 JMP106
IBM Connect2014 JMP106IBM Connect2014 JMP106
IBM Connect2014 JMP106
Ā 
Kaltura, open source video
Kaltura, open source videoKaltura, open source video
Kaltura, open source video
Ā 
Training on webwroks1
Training on webwroks1Training on webwroks1
Training on webwroks1
Ā 
Kaltura Presentation
Kaltura PresentationKaltura Presentation
Kaltura Presentation
Ā 
Improve customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational aiImprove customer engagement and productivity with conversational ai
Improve customer engagement and productivity with conversational ai
Ā 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise DemandsWebSphere Application Server - Meeting Your Cloud and On-Premise Demands
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ā 
DEV-1467 - Darwino
DEV-1467 - DarwinoDEV-1467 - Darwino
DEV-1467 - Darwino
Ā 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API Style
Ā 
Ten Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevTen Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to Dev
Ā 
Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...Open Source World : Using Web Technologies to build native iPhone and Android...
Open Source World : Using Web Technologies to build native iPhone and Android...
Ā 
SD Forum Java SIG - Service Oriented UI Architecture
SD Forum Java SIG - Service Oriented UI ArchitectureSD Forum Java SIG - Service Oriented UI Architecture
SD Forum Java SIG - Service Oriented UI Architecture
Ā 
Creating MVC Application with backbone js
Creating MVC Application with backbone jsCreating MVC Application with backbone js
Creating MVC Application with backbone js
Ā 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections Integration
Ā 
Rapid Application Development in the Cloud and On-Premises with Docker
Rapid Application Development in the Cloud and On-Premises with DockerRapid Application Development in the Cloud and On-Premises with Docker
Rapid Application Development in the Cloud and On-Premises with Docker
Ā 
Revised Adf security in a project centric environment
Revised Adf security in a project centric environmentRevised Adf security in a project centric environment
Revised Adf security in a project centric environment
Ā 
Architecting iOS Project
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS Project
Ā 
INTERNSHIP REPORT
INTERNSHIP REPORTINTERNSHIP REPORT
INTERNSHIP REPORT
Ā 

Ƅhnlich wie Extend App Arsenal With OpenSocial

Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsVincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsLetsConnect
Ā 
Open social gadgets in ibm connections
Open social gadgets in ibm connectionsOpen social gadgets in ibm connections
Open social gadgets in ibm connectionsVincent Burckhardt
Ā 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
Ā 
How to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsHow to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsIBM Connections Developers
Ā 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with JoomlaAnand Sharma
Ā 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
Ā 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWAManuel Carrasco MoƱino
Ā 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
Ā 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsApigee | Google Cloud
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon expressAeshan Wijetunge
Ā 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
Ā 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
Ā 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web ComponentsRed Pill Now
Ā 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
Ā 
Java on Google App engine
Java on Google App engineJava on Google App engine
Java on Google App engineMichael Parker
Ā 
OpenERP Technical Memento
OpenERP Technical MementoOpenERP Technical Memento
OpenERP Technical MementoOdoo
Ā 

Ƅhnlich wie Extend App Arsenal With OpenSocial (20)

Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsVincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Ā 
Open social gadgets in ibm connections
Open social gadgets in ibm connectionsOpen social gadgets in ibm connections
Open social gadgets in ibm connections
Ā 
Open Standards For Social Business Apps
Open Standards For Social Business AppsOpen Standards For Social Business Apps
Open Standards For Social Business Apps
Ā 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplications
Ā 
How to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM ConnectionsHow to add your own OpenSocial Gadgets to IBM Connections
How to add your own OpenSocial Gadgets to IBM Connections
Ā 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with Joomla
Ā 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
Ā 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
Ā 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
Ā 
Multiple odoo with single vue storefront
Multiple odoo with single vue storefrontMultiple odoo with single vue storefront
Multiple odoo with single vue storefront
Ā 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIs
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
Ā 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Ā 
Raptor 2
Raptor 2Raptor 2
Raptor 2
Ā 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
Ā 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
Ā 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
Ā 
Java on Google App engine
Java on Google App engineJava on Google App engine
Java on Google App engine
Ā 
OpenERP Technical Memento
OpenERP Technical MementoOpenERP Technical Memento
OpenERP Technical Memento
Ā 
.Net template solution architecture
.Net template solution architecture.Net template solution architecture
.Net template solution architecture
Ā 

Mehr von Ryan Baxter

Boston Cloud Meetup - IBM Containers
Boston Cloud Meetup - IBM ContainersBoston Cloud Meetup - IBM Containers
Boston Cloud Meetup - IBM ContainersRyan Baxter
Ā 
Think Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To MicroservicesThink Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To MicroservicesRyan Baxter
Ā 
MWLUG Bluemix
MWLUG BluemixMWLUG Bluemix
MWLUG BluemixRyan Baxter
Ā 
Building Highly Scalable Apps On Bluemix
Building Highly Scalable Apps On BluemixBuilding Highly Scalable Apps On Bluemix
Building Highly Scalable Apps On BluemixRyan Baxter
Ā 
Boston Cloud Foundry Meetup 5-22-14
Boston Cloud Foundry Meetup 5-22-14Boston Cloud Foundry Meetup 5-22-14
Boston Cloud Foundry Meetup 5-22-14Ryan Baxter
Ā 
Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixRyan Baxter
Ā 

Mehr von Ryan Baxter (6)

Boston Cloud Meetup - IBM Containers
Boston Cloud Meetup - IBM ContainersBoston Cloud Meetup - IBM Containers
Boston Cloud Meetup - IBM Containers
Ā 
Think Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To MicroservicesThink Small To Go Big - Introduction To Microservices
Think Small To Go Big - Introduction To Microservices
Ā 
MWLUG Bluemix
MWLUG BluemixMWLUG Bluemix
MWLUG Bluemix
Ā 
Building Highly Scalable Apps On Bluemix
Building Highly Scalable Apps On BluemixBuilding Highly Scalable Apps On Bluemix
Building Highly Scalable Apps On Bluemix
Ā 
Boston Cloud Foundry Meetup 5-22-14
Boston Cloud Foundry Meetup 5-22-14Boston Cloud Foundry Meetup 5-22-14
Boston Cloud Foundry Meetup 5-22-14
Ā 
Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMix
Ā 

KĆ¼rzlich hochgeladen

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024The Digital Insurer
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Ā 
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
Ā 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜RTylerCroy
Ā 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
Ā 

KĆ¼rzlich hochgeladen (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Ā 
Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024Finology Group ā€“ Insurtech Innovation Award 2024
Finology Group ā€“ Insurtech Innovation Award 2024
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Ā 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 

Extend App Arsenal With OpenSocial

  • 1. JMP103 : Extending Your App Arsenal With OpenSocial Ryan Baxter | Software Engineer | IBM Yun Zhi Lin | Software Engineer | IBM Ā© 2014 IBM Corporation
  • 2. Please Note IBMā€™s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBMā€™s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the userā€™s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. 2
  • 3. Credit ī€Š ī€Š ī€Š ī€Š ī€Š 3 IBM Notes Social Edition IBM Domino Social Edition IBM iNotes Social Edition IBM Connections IBM Social Business Toolkit
  • 4. About Us ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š 4 IBMer for 5 years OpenSocial (and open source) enthusiast Notes Java UI APIs, IBM Social Business Toolkit @ryanjbaxter, http://ryanjbaxter.com IBMer for 7 years Notes Widgets and OpenSocial developer XPages and Eclipse plugin development
  • 5. Agenda ī€Š ī€Š ī€Š ī€Š ī€Š 5 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 6. OpenSocial ī€Š ī€Š 6 Social APIs and Mini Applications (Gadgets) IBM has a leadership role including ā€“ On the Board of Directors ā€“ Committers on Apache Shindig ā€“ Has been instrumental in drafting the OpenSocial 2.0 & 2.5 specification ā€“ Invented and gave to the community Embedded Experiences and many, many more capabilities ā€“ Provided enterprise extensions Implementations Include: Cisco, SAP, Jive, Atlassian, IBM SmartCloud, Google, Yahoo, MySpace, LifeRay, Oracle, Magneto, Tibco Tibbr, Surfnet, Paypal . . . SmartCloud, IBM Connections, IBM Notes/DominoĀ®, Rational Team ConcertTM, Sterling, IBM Business Process Manager...
  • 7. Why Use OpenSocial? ī€Š ī€Š IBM sees value in OpenSocial because it offers two very important things to IBM, its partners, and its customers ā€“ An application model based on modern web standards that easily isolates third party code ā€“ APIs for interacting with and creating social data (we still have a long way to go with this one) Cross product integration with Notes, iNotes, and Connections ā€“ Integrate your application into one or all of these products ā€“ Stand-alone (web) applications ā€“ Embedded within an envelope, i.e., email or activity entry ā€“ ī€Š 7 Access to social data and data models from Connections and SmartCloud ā€“ Connections 4 activity streams API ā€“ SmartClouds person and contacts APIs
  • 8. Sample Gadget XML <?xml version="1.0" encoding="UTF-8" ?> <Module specificationVersion='2'> <ModulePrefs title="Acme Airlines"> <!-- Features provide sets of functionality to the gadget <Require feature="dynamic-height" /> <Require feature="embedded-experiences" /> </ModulePrefs> <!-- Content sections are the UI of the gadget --> <Content type="html" view="default, home"> <![CDATA[ <!--HTML, CSS, and JavaScript go here --> ]]> </Content> <Content type="html" view="embedded" href="ee.html"></Content> </Module> 8 -->
  • 9. The Basics ī€Š ī€Š 9 ModulePrefs ā€“ The gadget's ModulePrefs element contains basic information about the gadget ā— Title, author, description, icon ā— Features are also placed in the ModulePrefs element ā€“ Features provide a set of functionality and sometimes APIs to the gadget ā— Message Bundles can be added to provide translated strings for your gadget Content Sections ā€“ Content sections contain the UI and business logic for your gadget ā— You can have multiple content sections in one gadget XML ā— The HTML, CSS, and JavaScript of your gadget can either be inside the content section or externally in a separate file ā€“ Different content sections can be distinguished via the view attribute
  • 10. Gadget Views ī€Š ī€Š ī€Š ī€Š 10 Gadget views originally were used to distinguish between the amount of real-estate available to a gadget ā€“ Home = little real-estate ā€“ Canvas = large amount of real-estate Since OpenSocial 2.0 we have been moving more towards views indicating different uses ā€“ Embedded view for embedded experiences ā€“ Dialog views for when a gadget is opened in a dialog Content sections with the same view name will be concatenated together Gadgets can switch views programmatically and find out what view is currently rendered ā€“ gadgets.views.requestNavigateTo(viewName) ā€“ gadgets.views.getCurrentView()
  • 11. Gadget Preferences ī€Š ī€Š ī€Š 11 Any application is likely to have user preferences to allow the user to customize portions of the application Gadget preferences are specified in UserPref elements in the gadget XML ā€“ Strings, Booleans, Enums, and Lists all specified in the type attribute ā€“ Display name attribute shows in the UI ā€“ Name attribute can be used to access the preference within your code ā€“ You can also set a default value for a preference Get and set preferences via gadgets.Prefs ā€“ Require the feature setpefs when setting preferences
  • 12. Gadget Preferences Example <UserPref name="hello_pref" display_name="Name" default_value="World" datatype="string" required="true"/> <UserPref name="number_pref" display_name="Number" default_value="0" datatype="string" required="true"/> <UserPref name="list_pref" display_name="List" default_value="foo|bar| foobar" datatype="list" required="true"/> <UserPref name="boolean_pref" display_name="Boolean" default_value="false" datatype="bool" required="true"/> <UserPref name="enum_pref" display_name="Enum" default_value="Red" datatype="enum" required="true"> <EnumValue value="Red" display_value="Red"/> <EnumValue value="Green" display_value="Green"/> <EnumValue value="Blue" display_value="Blue"/> </UserPref> 12
  • 13. Developing OpenSocial Gadgets ī€Š ī€Š ī€Š 13 The first step to building OpenSocial gadgets is setting up a development environment OpenSocial Explorer ā€“ An open source project from the OpenSocial Foundation meant to help developers get started building OpenSocial gadgets. ā€“ Contains sample gadgets and allows developers to modify and create new gadgets IBM Social Business Toolkit Playground ā€“ You can do everything you can do in the OpenSocial Explorer within the Playground...and MORE! ā€“ Contains all the same samples plus sample gadgets that show how to integrate with SmartCloud and Connections ā€“ Easily test your embedded experiences in emails and activity stream entries
  • 15. IBM Social Business Toolkit Playground ā€“ On Greenhouse 15
  • 17. Getting Started Writing JavaScript ī€Š ī€Š ī€Š 17 Use your favorite JavaScript library Just like any other web app you don't want to begin running your business logic before the app has completely loaded gadgets.util.registerOnLoadHandler(function) ā€“ When the function passed to this API is called the gadget has completely loaded ā€“ Similar to JQuery and Dojo's ready functions ā€“ You can use those instead if you are using those libraries
  • 18. Making REST API Calls ī€Š ī€Š All web applications need to make some kind of API calls and gadgets are no different Use gadgets.io.makeRequest ā€“ Asynchronous ā€“ Takes a URL, parameters object, and callback function ā€“ Supports OAuth endpoints ā€“ DO NOT USE OTHER LIBRARIES' XHR METHODS var params = {}; params[gadgets.io.RequestParameters.METHOD] =gadgets.io.MethodType.GET; params[gadgets.io.RequestParameters.CONTENT_TYPE]=gadgets.io.C ontentType.JSON; var callback = function(response){ ... }; gadgets.io.makeRequest('http://example.com/api/foo', callback, params); 18
  • 19. OAuth ī€Š ī€Š ī€Š ī€Š ī€Š OpenSocial uses OAuth for making protected API calls ā€“ Support for OAuth 1.0a and 2.0 OAuth stands for OPEN AUTHORIZATION not OPEN AUTHENTICATION ā€“ Authentication technologies may be used when authorizing OAuth is very easy to use within a gadget, most of the hard work is done by the container Use makeRequest and simply specify which OAuth version to use The OAuth services used within the gadget need to be registered with the container Request Acme Gadget Approval 19 Browser Do you want to allow Acme Gadget access to your data? YES NO
  • 20. OAuth 1.0a in The Gadget XML ī€Š ī€Š Service name must match what is registered in the container URLs come from the provider you are authenticating with <OAuth> <Service name="my service"> <Request url="http://provider.com/authorize"/> <Access url="http://provider.com/accessToken"/> <Authorization url="http://provider.com/authorize"/> </Service> </OAuth> 20
  • 21. OAuth 1.0a in The Gadget XML ī€Š ī€Š Service name must match what is registered in the container URLs come from the provider you are authenticating with <OAuth> <Service name="my service"> <Request url="http://provider.com/authorize"/> <Access url="http://provider.com/accessToken"/> <Authorization url="http://provider.com/authorize"/> </Service> </OAuth> 21
  • 22. OAuth 2.0 in The Gadget XML ī€Š OAuth 2.0 is simpler, all URLs are configured on the container. ā€“ Service name needs to match what you register in the container ā€“ Scope indicates the API set you plan on accessing <OAuth2> <Service name="service name" scope="ProviderScope"> </Service> </OAuth2> 22
  • 23. Using OAuth in makeRequest ī€Š In the parameters passed to makeRequest indicate you are using OAuth 1.0a or 2.0 ā€“ gadgets.io.AuthorizeType.OAUTH2 ā€“ gadgets.io.AuthorizeType.OAUTH ā€“ ī€Š 23 Require the feature ā€œoauthpopupā€ ā€“ This feature can be used to open the popup window for the user to enter their credentials ā€“ Lets the gadget know when the OAuth dance is complete
  • 24. OAuth makeRequest Example var params = {}; params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH2; params[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = 'serviceName'; gadgets.io.makeRequest('url', function(response) { if (response.oauthApprovalUrl) { var onOpen = function() {}; var onClose = function() {}; var popup = new gadgets.oauth.Popup(response.oauthApprovalUrl, null, onOpen, onClose); var click = popup.createOpenerOnClick(); click(); } else if (response.data) { //We have data so lets use it! } else { gadgets.error('something went wrong'); } }, params); 24
  • 25. Interacting With The Container ī€Š ī€Š ī€Š ī€Š 25 As of OpenSocial 2.0 gadgets can now interact with the container they are rendered in ā€“ WARNING: These may not be supported completely in all containers - even every IBM Container Breaking Out Of The Box ā€“ Gadgets are rendered in an iFrame and they used to be confined to that frame in the browser ā€“ With the open-views APIs gadgets can render other gadgets and URLs in new tabs, windows, dialogs, etc Contributing To The UI ā€“ Action contributions allows your gadget to contribute to the toolbar and menus of the container ā€“ This is very similar to action contributions in Eclipse plugin development Understanding What Is Selected ā€“ Gadgets can also listen for selection in Notes and iNotes ā€“ Emails, Contacts, and Files
  • 27. Embedded Experiences ī€Š 27 Changing the way you get notifications ā€“ The goal is to make notifications more useful and interactive ā€“ Supported in email and activity streams ā— IBM Connections, IBM Connections Mail, IBM Notes 9, IBM iNotes 9 ā— JSON + XML
  • 28. Notifications Today Activity Entry Action Taken In Your App Standard MIME Email 28
  • 29. Notifications With Embedded Experiences Activity Entry Action Taken In Your App EE Data Model Gadget Standard MIME Email Your App 29
  • 30. Something Of Importance Took Place! ī€Š Embedded experiences are almost always generated due to an action that took place in an app ā€“ Someone completed a task ā€“ Someone sent a survey to a group of people ā€“ A travel request was submitted ā€“ A lead was entered in a CRM system ā€“ ī€Š 30 Now that the action took place you want to let a group of people know about it ā€“ BE SOCIAL! Your APP Action Taken In App
  • 31. How do you want to let people know about it? ī€Š ī€Š ī€Š Traditionally emails were sent ā€“ Still applicable today, many apps still do this In a social network, emails are not the primary medium for communication ā€“ Almost all social networks have an activity stream so we should post it there Gadget EE { ā€œgadgetā€ : ā€œhttp://acme.com/gagdet.xmlā€, ā€œcontextā€ : { ā€œidā€ : 123 } } ī€Š URL EE {ā€œurlā€ : ā€œhttp://domino.com/myxpage.xspā€} 31 Activity Entry EE Data Model Standard MIME Email
  • 32. Active Notifications ī€Š With embedded experiences, notifications are no longer static ā€“ Active content allows your notifications to never go stale and always be up to date Gadget ā€“ ā€“ No need to leave your client, stay where you are and get your work done ā€“ ī€Š 32 The data used in your notifications is unlimited, you have access to anything Your App
  • 33. Email Embedded Experience From: notifications@socialnetwork.com To: johndoe@example.com Subject: Social Network: Mary Has Commented On Your Status MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="XXXXboundary text" Mary has commented on your status. --XXXXboundary text Content-Type: text/plain Mary has commeneted on your status. --XXXXboundary text Content-Type: text/html <html> <!-- HTML representation here --> </html> --XXXXboundary text Content-Type: application/embed+json { "gadget" : "http://www.socialnetwork.com/embedded/commentgadget.xml", "context" : 123 } 33
  • 34. Activity Stream Embedded Experience { "postedTime": "2011-02-10T15:04:55Z", "actor": {...}, "verb": "post", "object" : {...}, "openSocial" : { "embed" : { "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [...] } } } } 34
  • 36. Agenda ī€Š ī€Š ī€Š ī€Š ī€Š 36 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 37. How Does OpenSocial Integrate Into IBM Connections? ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š 37 Leveraging the existing widgets framework ā€“ OpenSocial is just a new type of widget, just like iWidgets OpenSocial gadgets available on your homepage ā€“ In the activity stream ā€“ On the right hand side of your activity stream homepage ā€“ In the ā€œMy Pageā€ of your homepage Connections Mail supports embedded experiences in email OpenSocial gadgets can also extend the share box ā€“ Allows you to integrate other sharing capabilities right into Connections Connection's REST API and data model follows the OpenSocial standard OpenSocial gadgets can interact with their containers ā€“ Contribute actions for ShareBox integration ā€“ Open itself, Embedded Experiences, and URLs as dialogs
  • 38. Activity Streams Keep Your Users Up To Date ī€Š ī€Š ī€Š 38 REST API and data model backed by the OpenSocial standard ā€“ JSON data model - easy to use in your web apps 3rd party apps can post entries to the activity stream ā€“ Inside and outside of Connections Integrate the Connections activity stream into your apps ā€“ This is how we integrate the activity stream into Notes ā€“ If your app is an OpenSocial container you can render embedded experiences too!
  • 39. Extending The Share Dialog ī€Š ī€Š 39 The share dialog allows you to share content from anywhere in Connections ā€“ By default you can update your status or upload a file The share dialog is extensible using OpenSocial gadgets ā€“ Take advantage of OpenSocial's actions feature
  • 40. Connections Mail ī€Š ī€Š 40 Connections Mail, like Notes and iNotes, supports embedded experiences as well The same embedded experience you build for the activity stream will work in mail
  • 41. Deploying OpenSocial Gadgets In Connections ī€Š ī€Š 41 Only Homepage admins can deploy gadgets Gadgets must be added to the widget catalog in Connections ā€“ Security ā— Restricted or Trusted (SSO) ā€“ UI Integration points for the Share dialog ā€“ Proxy access ā— Only outside the intranet ā— Everything ā— Custom ā€“ OAuth service mappings
  • 42. Registering OAuth Clients For Gadgets In Connections ī€Š ī€Š 42 You must register OAuth clients for gadgets to use in Connections if a gadget is using OAuth ā€“ This is a two step process done via the wasadmin console, you must register an OAuth provider and then register an OAuth client ā— A provider may be used by multiple clients. For example Google, Facebook, Twitter, DropBox etc. ā€“ wsadmin>NewsOAuth2ConsumerService.registerProvider("provider123", "standard", "true", "false", "http://example.com/oauth/authorization", "https://example.com/oauth/token") ā— A client gets bound to a gadget and points to a provider. ā€“ You specify the client ID and secret obtained from the provider for your gadget ā€“ wsadmin>NewsOAuth2ConsumerService.registerClient("client123", "provider123", "confidential", "code", "my-client", "my-secret", "https://connections.com/connections/opensocial/gadgets/oauth2callback") After the clients have been registered you can bind them via wsadmin commands or via the Homepage administration UI
  • 44. Agenda ī€Š ī€Š ī€Š ī€Š ī€Š 44 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 45. How Does OpenSocial Integrate Into IBM Notes and iNotes? ī€Š ī€Š ā— ī€Š 45 Leveraging the existing My Widgets framework ā€“ OpenSocial is just a new type of widget, just like Google Gadgets or Web Page widgets OpenSocial gadgets are available in both Notes and iNotes ā€“ In the sidebar ā€“ In tabs ā€“ In floating (modeless) windows ā€“ In new windows (Notes only) ā€“ In Mail as Embedded Experiences Wire LiveText to OpenSocial gadgets ā€“ The recognized content is passed through gadget preference ā€“ By default launches in a floating window ā€“ Can be configured to open in tab, sidebar or new window
  • 46. How Does OpenSocial Integrate Into IBM Notes and iNotes? ī€Š 46 OpenSocial gadgets can interact with their containers ā€“ Contribute actions ā— To top-level menus and toolbars in Notes ā— To the context menu for mail messages, contacts, attachments (Notes only), and LiveNames (Notes only) ā€“ Contribute OpenSearch search engines to the Notes search center ā€“ Listen for and publish selection ā€“ Open itself, Embedded Experiences, and URLs in new windows, tabs, floating windows and the sidebar
  • 47. OpenSearch ī€Š Use OpenSearch APIs to contribute to the Notes search center <Optional feature="opensearch"> <Param name="opensearch-description"> <![CDATA[ <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" > <ShortName>CNN.com</ShortName> <Description>CNN.com Search</Description> <InputEncoding>UTF-8</InputEncoding> <SearchForm>http://search.cnn.com/</SearchForm> <Url type="text/html" method="get" template="http://www.cnn.com/search/?query={searchTerms}"> </Url> </OpenSearchDescription> ]]> </Param> </Optional> ī€Š 47 More information in the OpenSocial spec ā€“ http://opensocial-resources.googlecode.com/svn/spec/2.5/CoreGadget.xml#OpenSearch
  • 48. Creating OpenSocial Widgets in Notes and iNotes ā— 48 Notes client provides wizards to create OpenSocial Widgets from gadgets
  • 49. Managing OpenSocial Widgets in Notes and iNotes ī€Š ī€Š ā— 49 Widget Catalog database is used to manage OpenSocial Gadgets in Notes and iNotes ā€“ OpenSocial widget is not usable until it's published to catalog and approved by administrator During the approval process, administrators will configure ā€“ Proxy settings ā€“ required ā€“ OAuth consumer information ā€“ required only if a gadget need them A secure credential store database is used to manage sensitive information
  • 50. Creating Widgets for URL Embedded Experience in Notes/iNotes ī€Š 50 You need to create a Web Page widget and enable it for embedded experiences ā€“ Make the Embedded Experiences URL generic to accommodate all sub-pages of the application ā€“ Wild cards are allowed
  • 51. Deploying OpenSocial Widgets in Notes and iNotes ī€Š ī€Š ī€Š 51 Approved widgets need to be installed in Notes and iNotes Widgets can be pushed to end users by policy settings ā€“ This is the recommended way to deploy widgets End users can also install additional widgets from catalog by themselves
  • 53. Agenda ī€Š ī€Š ī€Š ī€Š ī€Š 53 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 55. Using the IBM SBT To Render Gadgets ī€Š ī€Š ī€Š 55 Using some of the OSGi bundles found in the IBM SBT you can not render gadgets within your own apps ā€“ You can allow users to integrate into your applications using gadgets ā€“ You can build a dashboard based on gadgets ā€“ You can embed the Connections Activity Stream gadget within your application The OSGi bundles from the SBT provide a service that other apps running on Domino can use to render their own gadgets Supports both WABs (Web Application Bundles) and XPages on Domino ā€“ You can use extension points to contribute ā€œcontainersā€ to the OpenSocial service running on the Domino server
  • 56. Key Concepts ī€Š ī€Š ī€Š 56 Depend on com.ibm.sbt.opensocial.domino or com.ibm.xsp.opensocial To render gadgets within your own application you must supply at least one instance of a class that implements ContainerExtPoint ā€“ Can be registered via the extension point com.ibm.sbt.opensocial.domino.container ā— This should be used by OSGi bundles ā€“ Can be registered by calling ContainerExtPointManager.registerContainers ā— This should be used by XPage apps Then you need to include a script tag in your application to include the OpenSocial Container JS ā€“ [domino server]/osplayground/gadgets/js/container:embedded-experiences:openviews:actions:selection.js?c=1&debug=1&container=sampleId ā€“ The container id must match the one from your ContainerExtPoint
  • 58. Security Tokens ī€Š ī€Š ī€Š A security token is an encrypted string which contains information about the user, container, and app It is required in order to render and gadgets in your application GET /sbtos/container/stgen Parameter Name c The domain of the container i The app ID. Any unique ID for your app will do. m The module ID, should always be 0. u 58 The ID of the container. d ī€Š Description The app url. Response: {ā€œtokenā€ : ā€œ123ā€, ā€œttlā€ : 5678}
  • 60. Agenda ī€Š ī€Š ī€Š ī€Š ī€Š 60 Introduction to OpenSocial OpenSocial in IBM Connections OpenSocial in IBM Notes and iNotes Social Edition 9.0 The Social Business Toolkit and OpenSocial Gadgets XPages and OpenSocial
  • 61. XPages and OpenSocial ī€Š ī€Š 61 XPages and Embedded Experience mail ā€“ XPages can be embedded in mail directly by using a URL embedded experience ā€“ Gadget XML can be put in an NSF and access application data via XPages REST API ā€“ It's easy to send embedded experience emails from XPage apps XPages and Activity Streams ā€“ Support to post activities with embedded experiences to activity streams ā€“ Support to read activity stream data in XPages apps
  • 62. Creating Embedded Experience Emails Using Notes.jar 62
  • 63. XPages Simple Action To Send Embedded Experience Emails ī€Š New ā€œSend Mailā€ simple action ā€“ Available in 9.0 ā€“ Provides an easy way to send mails and supports Embedded Experience mail ā€“ You can either compose JSON by yourself or XPages will compose it based on your input. ā€“ 63
  • 64. Leveraging SSO For XPage Embedded Experiences ī€Š ī€Š ī€Š We do not want users to log in again when opening a XPage embedded experience The mail server and the server hosting the XPages app must have multi-server SSO enabled ā€“ For iNotes users, the servers must be in same SSO domain ā€“ For Notes users, a managed account needs to be created for the server hosting the XPages application ā— This can be pushed via policy In the case of XPage embedded experiences in the Connections activity stream, the Connections server must be in the same SSO domain as the Domino server hosting the app ā€“ If you want to integrate a classic web based Domino application with embedded experience, the above steps apply as well. 64
  • 67. Resources ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š ī€Š 67 OpenSocial Tutorials: https://opensocial.atlassian.net/wiki/display/OS/Home OpenSocial Explorer: http://opensocial.github.io/explorer/download.html Apache Shindig: http://shindig.apache.org IBM Social Business SDK: http://ibmsbt.openntf.org/ IBM Social Business Toolkit Playground: https://greenhouse.lotus.com/sbt/SBTPlayground.nsf/ IBM Domino 9.0 Social Edition OpenSocial Component Deployment Cookbook: http://www-10.lotus.com/ldd/dominowiki.nsf/dx/IBM_Domino_9.0_Social_Edition_OpenSocial_D Developing Gadgets For Connections: https://www.ibm.com/developerworks/lotus/documentation/osgadgetconnections4/index.html OpenSocial Specs: https://opensocial.atlassian.net/wiki/display/OSD/Specs OAuth Client Registration: http://www-10.lotus.com/ldd/lcwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.0+d Activity Streams API: http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+
  • 68. Resources ī€Š ī€Š 68 OpenSocial Gadgets In The Playground: https://github.com/OpenNTF/SocialSDK/wiki/OpenSocial-Gadgets-In-The-Playground Building OpenSocial Containers Using The SBT: https://github.com/OpenNTF/SocialSDK/wiki/Building-Your-Own-OpenSocial-Container
  • 69. Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. Ā© Copyright IBM Corporation 2014. All rights reserved. ļ‚§ U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ļ‚§ IBM, the IBM logo, ibm.com, IBM Connections, IBM Notes Social Edition, IBM iNotes Social Edition, IBM Domino Social Edition are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (Ā® or ā„¢), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at ā€œCopyright and trademark informationā€ at www.ibm.com/legal/copytrade.shtml Other company, product, or service names may be trademarks or service marks of others. 69
  • 70. Engage Online ī€Š ī€Š SocialBiz User Group socialbizug.org ā€“ Join the epicenter of Notes and Collaboration user groups Follow us on Twitter Engage ā€“ @IBMConnect and @IBMSocialBiz Online ī€Š LinkedIn http://bit.ly/SBComm ā€“ Participate in the IBM Social Business group on LinkedIn: ī€Š Facebook https://www.facebook.com/IBMSocialBiz ā€“ Like IBM Social Business on Facebook ī€Š Social Business Insights blog ibm.com/blogs/socialbusiness ā€“ Read and engage with our bloggers 70
  • 71. ļ‚§ Access Connect Online to complete your session surveys using any: ā€“ Web or mobile browser ā€“ Connect Online kiosk onsite 71