// 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; }
// Constructor para cada tipo de funcao (GetInfo, GetPicture, WallPost, etc..) public GenerateState(string facebookId, FacebookAPI.GetInfoCallback callback, int tries = 0) { stateType = StateType.GetInfo; globalFacebookId = facebookId; getInfoCallback = callback; this.tries = tries; }