// 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; }
// Funcao para pegar informacoes do usuario // Retorna FacebookId, Nome, Sobrenome, e Login public IEnumerator GetInfo(string _facebookId, FacebookAPI.GetInfoCallback callback, int tries = 0) { // Se ja estiver cacheada as informacoes, somente enviar para o callback if (users.ContainsKey(_facebookId) && users[_facebookId].firstName != null) { if (callback != null) { callback(null, _facebookId, users[_facebookId].firstName, users[_facebookId].lastName, users[_facebookId].userName); } yield break; } // Caso contrario, fazer uma conexão ao facebook para pegar as informacoes else { // Cria URL do request string url = GRAPH_URL + _facebookId + "/?"; if (_facebookId == "me") { url += "access_token=" + WWW.EscapeURL(facebookToken) + "&"; } url += "fields=username,first_name,last_name"; WWW getInfo = new WWW(url); yield return(getInfo); // Se houver algum erro, enviar erro para o callback if (getInfo.error != null) { if (callback != null) { callback(getInfo.error, _facebookId, null, null, null); } } // Caso contrario, decodar JSON recebido else { IJSonObject data = getInfo.text.ToJSon(); // Se o JSON recebido for invalido, retornar e enviar para o callback if (data.IsEmpty() || data.IsError()) { if (callback != null) { callback("Invalid JSon: " + getInfo.text, _facebookId, null, null, null); } yield break; } // Cacheia as informacoes recebidas FacebookAPI.User user = (users.ContainsKey(_facebookId)) ? users[_facebookId] : new FacebookAPI.User(); user.facebookId = _facebookId; user.firstName = data.GetString("first_name"); user.lastName = data.GetString("last_name"); user.userName = data.GetString("username"); // Envia pro callback if (callback != null) { callback(null, _facebookId, user.firstName, user.lastName, user.userName); } } } yield break; }