// Funcao para pegar a foto do usuario // Retorna foto como Texture public IEnumerator GetPicture(string _facebookId, FacebookAPI.Picture type, FacebookAPI.GetPictureCallback callback, int tries = 0) { // Se ja estiver cacheada as informacoes, somente enviar para o callback if (users.ContainsKey(_facebookId) && users[_facebookId].picture != null) { // Cacheia todos os tamanhos de fotos possiveis (square, small, etc) e retorna pro callback somente // se tiver cacheado o tamanho de foto correto solicitado if (type == FacebookAPI.Picture.Square && users[_facebookId].picture.square != null) { if (callback != null) callback(null, _facebookId, users[_facebookId].picture.square); yield break; } else if (type == FacebookAPI.Picture.Large && users[_facebookId].picture.large != null) { if (callback != null) callback(null, _facebookId, users[_facebookId].picture.large); yield break; } else if (type == FacebookAPI.Picture.Small && users[_facebookId].picture.small != null) { if (callback != null) callback(null, _facebookId, users[_facebookId].picture.small); yield break; } else if (type == FacebookAPI.Picture.Medium && users[_facebookId].picture.medium != null) { if (callback != null) callback(null, _facebookId, users[_facebookId].picture.medium); yield break; } } // Caso contrario, fazer uma conexão ao facebook para pegar as informacoes // Cria URL do request string url = GRAPH_URL + _facebookId + "/picture/?"; if (_facebookId == "me") url += "access_token=" + WWW.EscapeURL(facebookToken) + "&"; url += "type=" + type.ToString().ToLower(); WWW getPicture = new WWW(url); yield return getPicture; // Se houver algum erro, enviar erro para o callback if (getPicture.error != null) { if (callback != null) callback(getPicture.error, _facebookId, null); } // Caso contrario, validar foto recebida else { // Checa se a foto não esta no formato de GIF (formato não suportado pela Unity3D) if (getPicture.text.StartsWith("GIF")) { if (callback != null) callback("User images are GIF format!", _facebookId, null); yield break; } // Cacheia as informacoes recebidas Texture picture = getPicture.texture; FacebookAPI.User user = (users.ContainsKey(_facebookId)) ? users[_facebookId] : new FacebookAPI.User(); if (user.picture == null) user.picture = new FacebookAPI.User.Picture(); if (type == FacebookAPI.Picture.Square) user.picture.square = picture; else if (type == FacebookAPI.Picture.Large) user.picture.large = picture; else if (type == FacebookAPI.Picture.Small) user.picture.small = picture; else user.picture.medium = picture; // Envia pro callback if (callback != null) callback(null, _facebookId, picture); } yield break; }