Imprimir esta página. Agora seus amigos sabem o quão generoso você é, porque eles podem ver os gifts que você deu a eles. Mas o pudim do bolo seria se você pudesse mostrar isso a todos. A boa notícia é que você pode se você postar o presentear no seu stream de atividades (activity stream). Estas atividades são mostradas de várias maneiras dependendo do container.
O primeiro passo em direção a postar uma atividade é simples, chame uma nova função ao final de giveGift, passando o presente e o amigo que receberá o gift.
function giveGift() {
var nut = document.getElementById('nut').value;
var friend = document.getElementById('person').value;
globalGivenGifts[friend] = nut;
var json = gadgets.json.stringify(globalGivenGifts);
var req = opensocial.newDataRequest();
req.add(req.newUpdatePersonAppDataRequest(opensocial.
DataRequest.PersonId.VIEWER, 'gifts', json));
req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'),
'viewerFriends');
req.add(req.newFetchPersonAppDataRequest('VIEWER', 'gifts'),
'data');
req.add(req.newFetchPersonAppDataRequest('VIEWER_FRIENDS',
'gifts'), 'viewerFriendData');
req.send(onLoadFriends);
postActivity(nut, friend);
}
Agora você deve perceber que a nova função postActivity não está sendo feita em nome do amigo ou do visualizador, ambos os dados são informação externa do escopo da chamada da função, porque giveGift é chamada quando o usuário clica em um botão, não quando a API é usada.
Existem 2 jeitos de resolver este problema. A primeira solução é passar mais informações no formulário, incluindo os nomes reais de todos os amigos e a ID do visualizador. A segunda e, provavelmente, mais prática é colocar alguma parte dos dados da aplicação no escopo global, assim o postActivity pode acessá-los a qualquer momento. É desejável que outras partes da aplicação também precisem de armazenamento (ou o ID do visulizador) em algum momento em que os dados não estejam sendo passados na função, então, ter os dados guardados no nível global da aplicação é uma idéia conveniente.
Para enviar mensagens para o stream de atividades, basta transferir o visualidador, a tabela de amigos, e os IDs para o escopo global.
var globalViewer = {};
var globalFriends = {};
function onLoadFriends(data) {
var viewer = globalViewer = data.get('viewer')
.getData();
var viewerFriends = data.get('viewerFriends')
.getData();
var giftData = data.get('data').getData();
var viewerFriendData = data.get
('viewerFriendData').getData();
var friends = new Array();
html = new Array();
html.push('<select id="person">');
viewerFriends.each(function(person) {
html.push('<option value="' + person.getId()
+ '">' + person.getDisplayName() + "</option>");
friends[person.getId()] = person.getDisplayName();
});
html.push('</select>');
document.getElementById('friends').innerHTML
= html.join('');
globalFriends = friends;
updateGiftList(viewer, giftData, friends);
updateReceivedList(viewer, viewerFriendData,
viewerFriends);
}
Agora que toda a informação necessária está em um escopo global, postActivity está funcionando 100%. Postar a atividade para o stream é simples, a criação consiste de uma atividade, uma prioridade e uma função callback. Crie uma atividade com um título estilo “você deu a seu amigo um pistache vermelho”. A prioridade conta ao container para postar a atividade caso o usuário tenha dado permissão, ou perguntar por permissão. Finalmente a função callback é um parâmetro opcional, mas se não for omitida a função createActivity irá disparar um recarregamento da página. Uma vez que um recarregamento não é necessário aqui, o método postActivity fornece então uma função vazia para executar.
function postActivity(nut, friend) {
var options = ['a cashew nut', 'a peanut', 'a hazelnut', 'a red pistachio nut'];
var title = globalViewer.getDisplayName() + ' gave ' + globalFriends[friend] + ' ' + options[nut];
var params = {};
params[opensocial.Activity.Field.TITLE] = title;
var activity = opensocial.newActivity(params);
opensocial.requestCreateActivity(activity,
opensocial.CreateActivityPriority.HIGH, function() {});
}
Parabéns, você acaba de criar oficialmente um Widget OpenSocial, que se aproveita de uma série de vantagens da API, incluindo informações de profile e gravação de dados. Mas, não pare por aqui, há muito trabalho a ser feito. Investigue a documentação e veja se você pode dar os próximos passos sozinho!
Bom,continuaremos com mais tutoriais e dicas em breve.
Fico por aqui, espero ter ajudado e que vocês contribuam caso achem algum erro de tradução, ou mesmo algum descuido técnico
Obrigado.
Muito bom uma versão traduzida do tutorial, mas espero ver aqui outros tutoriais mais avançados !

Gostei bastante do seu blog, na verdade só o conheci através do blog do amanaiê e foi uma boa surpresa
Oi edmar, bacana! em breve teremos mais conteúdo deste tipo. se quiser, me adicione no messenger para conversarmos. diego.ttg@gmail.com
abraço
Eu te adicionei ! Temos muito o que conversar !
Abraço
Muito bom o tutorial mesmo
cara como eu faço o “Showcase View” quando a pessoa coloca no perfil e fica menor nos que eu vi até era outro modelo depois você clica em “Visualizar aplicativo inteiro” fica outro modelo como faço isso?
Parabéns, gostei da tradução, sou novo no uso do openSocial, mas ja tenho bastante experiência com GMaps!