The Windows Live Contacts gadget is picking up speed and interest, and we're starting to see some common factors in questions and conversations with web application teams inside Microsoft and out.
Q: The gadget sample code doesn't load on my web page! All I see is a white box. What's wrong?
A: Woops! There was a typo in the doc sample. Check the sample code HTML you copied from the early docs. The expression document.getElementById("ContactGadgetSite") should be document.getElementById("ContactsGadgetSite"). Note the "s" in the middle. The string has to match the ID of the DIV element defined earlier. The doc sample has been fixed.
Q: How do I copy channel.htm to my machine? When I bring it up in the browser, it just shows a blank page!
A: Open the channel.htm as a file in Notepad or VS or other editor instead of opening it in the browser. File: Open, http://dev.live.com/scripts/addressmanager/channel.htm. Then File: Save As to save the file to your local drive or web server file share. You can name the file whatever you want, but be sure you put the full URL path to that file in the last param to the Microsoft.Gadget.ContactSelectorPartner() constructor call.
Channel.htm contains a little script that navigates the current browser window to about:blank when it has finished its work. This is necessary to reset the trigger for the next channel event / message.
Q: Cool! I can use this gadget to suck all the contacts out of users who visit my site?
A: No, the web site doesn't have access to the contact data. The end user is in control of when and what is transferred. No data transfer occurs without the user's permission. If the web site requests name and email address of the contacts the user selects, that's all the web site will receive.
If a web site tells the end user it wants name and email address for the selected contacts, but the user sees in the gadget's verification page that the web site has actually requested a lot of other data fields that are not needed for the current operation, such as mailing address or phone numbers, then the user should be suspicious of the web site and cancel the transfer.
Q: How does the gadget prevent the host web site from seeing/stealing all the user's contact data?
So, even though the user can see their contacts on the screen in a box sitting in the host page, the host page cannot see the contacts at all.
Q: The sample apps are dumb. I already know where my buddies live!
A: The sample apps are just that: samples. Their primary function is to show how to use the contacts gadget (and the Virtual Earth map control) in a realistic application setting.
The sample apps are the itty bitty free sample tasting spoons at an ice cream parlor, not the three scoop banana sundae with hot fudge and sprinkles. Windows Live provides many flavors of ice cream and top dressings. Your job as a web app author is to build your own signature sundaes using a palette of Windows Live flavors and your own ingredients. It's a lot easier to create a variety of sundaes when you don't have to make the ice cream yourself!
Instead of focusing on the utility of the sample apps, take a step back and think about the utility of the contacts gadget itself, and of the data management techniques developed for the contacts gadget that can be used by other gadgets shepherding other data for the user. That's what makes this gadget interesting.
Q: The contacts gadget distributes my personal information without my permission!
A: No, it doesn't. You gave your contact information to your buddy, and entrusted them to use your contact information appropriately. Your buddy has always been able to manually type your contact info into the ship-to form of an online retailer to send you a book. The online retailer now has your contact info, because your buddy gave it to them. Or, your buddy can use the contacts gadget on that web store site to send that book to you. The contacts gadget makes it easier for your buddy to use your contact info, but it does not change the fact that it is your buddy who decides where to use your contact info.
If you don't want to entrust your home mailing address to your buddies, then don't share it with them. You can specify which of your contacts can see which parts of your personal info in the Windows Live Contacts preferences and settings.
Q: Is it really correct to call it a gadget? It's different from the Windows Live Gadgets SDK gadgets.
A: Yes and No. Yes, it's a gadget in the sense that it is a strongly encapsulated relatively small thing that implements a specific function. An iPod is a gadget. A cellphone is a gadget. A bulldozer is not a gadget.
However, it's true that this contacts thingamajig does not fit the narrow
Debates and discussions rage on internally. Just keep in mind that this is a beta, where everything including the name are subject to change.
Meanwhile, if calling it a gadget doesn't seem right to you, feel free to call it a snorkel instead. Or, on a less formal basis, Fred.
Q: The sample apps don't work with Firefox 2.0 beta 1!
A: This is an issue between the Virtual Earth map used by both sample apps and Firefox 2.0 beta's support for SVG or VML. The contacts gadget itself works fine in Firefox 2.0 beta (and Firefox 1.5). The proper authorities have been notified.
Q: The gadget works fine on my page, until the user clicks "submit". My page doesn't receive the data! What's wrong?
A: The channel endpoint on your web site/server is misconfigured. Double check the last param you pass to the Microsoft.Gadget.ContactSelectorPartner() constructor is the full URL to the channel.htm on your server. If this URL is not in the same domain as your host web page, you won't get any data. If you haven't copied channel.htm to your server, you won't get any data. If you pass "channel.htm" that won't work because that's not a full URL. Relative URLs won't work because the thing sending you the data isn't in your domain / browser context.
Q: So where's that in-depth code walkthrough you promised?
A: Yeah, yeah. I'm gettin to it. I'm working on a blog post that hosts the contacts
gadget snorkel right here in the blog, but ran into an issue with the msdn blog server freaking out over script embedded in the post. I'll show it who's boss, it'll just take a little longer... hehe "Vee Haf Vays..."