This is an overview and demo of the application that I submitted for the Chatter Developer Challenge. It is a Salesforce Chatter for Android app running on a combination of the Force.com platform, Google App Engine and a Google Android mobile handset. It utilizes Force.com Remote Access Applications with OAuth for security.
The Android application has the following functionality:
- Display your Chatter NewsFeed
- Update your User status
- Refresh your Chatter NewsFeed and store it in the local SQLite database
- Choose a project (custom object) that you are following and view its Chatter Feed
- Update the project’s status
- Refresh the Chatter Feed for the project (including field changes to the record) and store it in the local SQLite database
The app does not include the functionality to reply to posts. Since Chatter is running in a Developer Edition and they are only allowed to have 1 user, it seemed rather pointless to respond to my own posts.
Here are some screenshots of the application in case you want to skip the video.
I use Google App Engine to tie all of this applications together and provide a coherent security model. So I wrote a small App Engine app that uses 3-legged OAuth to authorize access to Force.com and my Chatter feeds using Force.com Remote Access Application. Once authorized the Force.com Web Services Connector, running on App Engine, performs the interactions with SFDC such as submitting new status updates, fetching my feeds and displaying them as JSON objects.
App Engine recently started supporting 2-legged OAuth in combination with Google Accounts so that any App Engine application can become an OAuth service provider. Since OAuth support is baked into the Android platform I tried to hook up the Android handset as an OAuth consumer but could not finish in time to submit my entry to the Developer Challenge.
Since Android doesn’t play well with SOAP-based Web Services I think this approach in combination to JSON makes an appealing option. If you have any ideas, I’d love to hear them.