Here is another approach:
Suppose $f$ is convex, $x \neq y$, and $R(x,y) = {f(x)-f(y) \over x-y }$ (see https://en.wikipedia.org/wiki/Convex_function#Properties) .
It is straightforward to show that if $ x<y<z$, then
$R(x,y) \le R(y,z)$. This can be seen graphically by noticing that the slopes of the secants joining points on the graph of $f$ at $x,y,z$ are non decreasing.
Pick $x_0$, then the above shows that
$c_- = \limsup_{h \uparrow 0}R(x_0,x_0+h) \le \liminf_{h \downarrow 0}R(x_0,x_0+h) = c_+$.
Choose $c_0 \in [c_-,c_+]$, then
if $x>x_0$ we have $R(x,x_0) \ge c_0$ and if $x<x_0$ we have
$R(x,x_0) \le c_0$. Combining shows that
$f(x) \ge f(x_0) + c(x-x_0)$ for all $x$.
For the other direction, suppose $\lambda \in (0,1)$ and
$x_0 = (1-\lambda) x_1 + \lambda x_2$. Let $c_0$ be the constant $c(x_0)$, then we have
$f(x_1)-f(x_0) \ge c_0(x_1-x_0)$ and $f(x_2)-f(x_0) \ge c_0(x_2-x_0)$.
Hence $(1-\lambda) (f(x_1)-f(x_0)) + \lambda (f(x_2)-f(x_0)) \ge (1-\lambda )c_0(x_1-x_0) + \lambda c_0(x_2-x_0)$ which reduces to
$(1-\lambda) f(x_1) + \lambda f(x_2) \ge f(x_0)$.