Using Evernote and Google Docs in your web or

Using Evernote and Google Docs in
your web or mobile application
(and potentially Dropbox and Skydrive)
By Peter Messenger
Senior Developer – Triple Point Technology
http://www.petermessenger.com
Why use cloud based storage?
• Large user base
– Evernote more than 10 million installs on android per
month
– Dropbox has more than 100 million users
– Skydrive has more than 200 million users
• Makes it easier for user, can be used anywhere
• Previously would output to PDF or RTF (RTF had
issues on IOS/Mac OS as they store images
differently and you cannot generate files that will
work correctly)
What is Evernote?
• Evernote allows you to generate notes, save
webpages and collaborate with others
• Free and paid versions available
• Website : http://evernote.com/
• Available natively on all major mobile devices
(IOS, Android, Blackberry, Windows Phone)
• Available on the web and desktops (Mac OS,
Windows, Windows 8 and browsers)
• Uses XML to store documents, very similar HTML
Evernote Development
• Has an API interface to integrate with server
• Sdks – Android, IOS, C#, C++, Java, Python,
Perl, Ruby and more
• Website : http://dev.evernote.com/
• Need a developer token, gives access to
sandbox (test server), once complete you
email support and they switch to production
• For simplicity, used the C# sdk
– https://github.com/evernote/evernote-sdk-csharp
Demonstration
• Website
– http://www.physiotherapyexercises.com
• Uses a single page in the background to
connect to evernote, generate the document
and copy it back to the server
• Integrates into website quite well
• Was using XML transforms to generate HTML
previously, created a new transform to
generate evernote document format
Connecting to Evernote
• Evernote supports the same standard OAuth
authentication process used by other popular
web services like Twitter and Google.
• Details :
– http://dev.evernote.com/start/core/authenticatio
n.php
• Used a helper library for this
– https://github.com/danielcrenna/oauth
Connecting to Evernote
• Connect to server passing in
– Username and password
– Callback url
• User is taken to logon page, assuming they accept,
returns temporary token details to your callback url
(this temporary token can last for a long period)
• Connect to server again using temporary tokens, get
authorisation token
• Generate note using authorisation token, get note id,
redirect to evernote account so user can view
document
Connecting to Evernote
Evernote document format
• Xml, can include attachments
• http://dev.evernote.com/start/core/enml.php
<en-note>
<h1>Hello, world</h1>
<en-media width="640" height="480"
type="image/jpeg"
hash="f03c1c2d96bc67eda02968c8b5af9008"/>
</en-note>
• Hash is the unique identifier for the resource
attachment to the note
• Supports a whole range of HTML elements
Android Demonstration
• Shows how you can use the same api in an
android app
• Could also do this using android sdk and/or
check to see if the user had evernote installed
on their phone and open it using the android
version rather than the website
Google Docs/Google Drive
• Google’s equivalent to microsoft word
• Similar to evernote, documents are stored in a
variant of HTML
• Can then use drive to output to different formats
(PDF, Word etc – can be a bit flaky with
formatting)
• API supports Java, PHP, Javascript, NET, Objective
C, Android, Ruby etc
• Website : https://developers.google.com/drive/
Google Drive
• Quick start for C#
– https://developers.google.com/drive/quickstart-cs
• Enable Drive API
– https://code.google.com/apis/console/
– Much like evernote, you need a callback url (this is
case sensitive and passing in parameters doesn’t seem
to work fully, so use session variables)
– Unlike evernote, the callback url must be specified in
the google console
• Install the Google Client Library
Google Drive
• C# example is for MVC and massively
overcomplicates what you need to do
• Can pretty much ignore 99% of the example
and just use the googleutils class.
• You need to store the user credentials in a
database or on the server
• Uses Oauth, but simpler and all built into
library
Demonstration
• Website
– http://www.physiotherapyexercises.com
• Uses a single page in the background to
connect to google drive, generate the
document and copy it back to the server
• Integrates into website quite well
• Was using XML transforms to generate HTML
(slightly different to get around formatting
limitations)
Generating Document
• Can pass in HTML and use the in built
conversion routine to save in google docs
format
• Formatting of tabular data is quite
problematic as you can only have one cell
style, so end up having tables inside tables to
get around it.
Dropbox and Skydrive
Have not implemented these yet (as they are more
generic storage options), but they use the same
concepts.
• Dropbox
– https://www.dropbox.com/developers/reference/sdk
– IOS, Android, Python, Ruby, Java, OS X
– Several third party libraries (php, net, js etc)
• Skydrive
– http://msdn.microsoft.com/enus/library/live/hh826521.aspx
Questions?
• Presentation slides on my website and blog
– http://www.petermessenger.com