This post is part of the Who's @ Google I/O, a series of blog posts that give a closer look at developers who'll be speaking or demoing at Google I/O. This guest post is written by Jeremy Glassenberg from Box.net, who will be demoing as part of the Developer Sandbox.
Google's rich platform for developers is matched only by its variety of innovative web services. So when working with Google APIs, why use only one or two Google services?
When launching with the Google Apps Marketplace in March, Box.net could see opportunities in connecting with Google services across the board, from sharing files in Gmail to enhancing collaboration in Google Sites. But how could we connect to half a dozen different services, while making the interaction with a partner completely seamless and easy to use?
Luckily, for those who want to go all-out on the Google platform, Google's diverse APIs provide what you need to code efficiently, and organized to connect everything in a way that makes sense. Here is what we’ve found helpful to help you optimize your development experience:
1. Standards across APIs
By leveraging Google's support for the OpenID and Oauth protocols, we can not only connect Google users to access Box.net easily, but also to make all features of Google accessible from Box. This way, when Google Apps accounts connect to Box, we can automatically connect users to Google Docs, Google Sites, Google Calendar and Gmail through the magic of a secure, centralized single sign-on process.
2. APIs and Gadgets make for a seamless integration
We wanted to make it easy for users to access services like Gmail and Google Docs from within Box. With our OpenBox Developer Platform, we could make those Google services accessible through our simple file menu. Users could right-click on a file, and choose to "Share in Gmail", "Edit with Google Docs", etc. But we wanted to go even further, and integrate "inside and out" - making Google accessible in Box, and Box accessible in Google's services. This was made possible with Google Gadgets.
By adjusting gadgets we made for OpenSocial partners such as LinkedIn, we could easily create Box.net gadgets that also work with iGoogle, Google Sites, and even Gmail Labs and Google Calendar Labs. These "Box.net inside Google" gadgets became surprisingly popular among new users.
We even found it possible to connect Google services together more deeply through these two-way integrations. By making our OpenBox features available in our Google Gadgets, our users could edit a document from Box in Google Docs, or share a file into Google Sites, from within the Gmail sidebar.
3. Focus on user experience
With multiple connections to Google services in Box, and the placement of Box.net inside four Google services via Google Gadgets, this became an exciting engineering project. But we couldn't forget that everything needed to work in a straightforward, easy-to-use manner for businesses in Google Apps. Luckily, Google Apps' design and installation process for the Marketplace helps to bring just about everything together for the user.
The installation process enables you to obtain the OpenID information for a Google Apps administrator, access rights to various Google APIs, and connect users in the same Google Apps domains automatically. This sounds great for your code, but pay attention to the user experience. Google Apps administrators need to understand what they're about to make accessible to their users. Sub-users of the Apps account need to be able to sign up easily as well.
Users and administrators will also want to choose which services to use. In our case, some users wanted to edit Google Docs in Box.net, while others just want to access Box.net from within Gmail or Google Sites. Thus, just like within Google Apps' administrative console, Box.net made individual components easy to enable and disable. We also provided detailed instructions for adding and using each piece of the integration.
At Box, we look forward to continuing work with Google, integrating even more deeply as Box.net and Google both expand our platforms.