for authentication, we should use state param

こちらも問題がないようであれば Digest::SHA を使用するように変更していただけないでしょうか。

    has 'state_generator' => sub { Digest::SHA::sha1_hex(rand() . $$ . {} . time) };