This question is over a year old, but I have a different perspective which might interest you.
As others have pointed out, $\text{Proj}$ is not even a functor, let alone fully faithful, but it does factor through an equivalence in the following sense. A $\mathbb{Z}$-grading on a ring $A$ is the same as an action of the multiplicative group $\mathbb{G}_m$ on $\text{Spec } A$. Homomorphisms of graded rings correspond to $\mathbb{G}_m$-equivariant morphisms of schemes. So $\text{Spec}$ induces an equivalence from graded rings to affine schemes with $\mathbb{G}_m$-action.
But $\text{Proj}$ is only defined on nonnegatively graded rings. Call a $\mathbb{G}_m$-action on scheme $X$ contracting if it extends to an action of the multiplicative monoid $\mathbb{A}^1$. Intuitively, this means that the $\mathbb{G}_m$-action contracts $X$ onto its fixed point locus $X^{\mathbb{G}_m}$. Then a graded ring $A$ is nonnegatively graded if and only if the corresponding $\mathbb{G}_m$-action on $\text{Spec } A$ is contracting.
So we can interpret $\text{Proj}$ as a construction which builds a scheme from an affine scheme with contracting $\mathbb{G}_m$-action. Namely, it sends $X$ to the GIT quotient $(X \setminus X^{\mathbb{G}_m})//\mathbb{G}_m$.
The failure of functoriality is due to the fact that a morphism $X \to Y$ can send points in $X \setminus X^{\mathbb{G}_m}$ to points in $Y^{\mathbb{G}_m}$. There is also some loss of information because any nonzero power of the $\mathbb{G}_m$-action produces the same GIT quotient: this is the Veronese stuff.