Пример #1
0
    // 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;
	}