CakeFest 2024: The Official CakePHP Conference

OAuthProvider::generateToken

(PECL OAuth >= 1.0.0)

OAuthProvider::generateTokenランダムなトークンを生成する

説明

final public static OAuthProvider::generateToken(int $size, bool $strong = false): string

擬似乱数を使ってランダムなバイトの文字列を生成します。

パラメータ

size

トークンの長さ。バイト単位で指定します。

strong

true に設定すると、エントロピーとして /dev/random を使います。 それ以外の場合は、ブロックされることのない /dev/urandom を使います。 このパラメータは、Windows では無視されます。

戻り値

生成されたトークンをバイト文字列で返します。

エラー / 例外

strong パラメータが true のときは、 (十分な量の初期ランダムデータがなかったなどの理由で) 代替 rand() 実装を使うことになった場合に E_WARNING レベルのエラーが発生します。

例1 OAuthProvider::generateToken() の例

<?php
$p
= new OAuthProvider();

$t = $p->generateToken(4);

echo
strlen($t), PHP_EOL;
echo
bin2hex($t), PHP_EOL;

?>

上の例の出力は、 たとえば以下のようになります。

4
b6a82c27

注意

注意:

十分な量のランダムデータがシステムから得られなかった場合、この関数は PHP の rand() 関数の実装を使って残りのバイトを埋めます。

参考

add a note

User Contributed Notes 1 note

up
0
carlosouza at me dot com
12 years ago
Be careful when setting the 'strong' parameter to true.

If you system doesn't have enough entropy your script will block which can cause timeouts in other parts of your code.

In my case, the most serious symptom was my script blocking when trying to read from /dev/random and causing a 'MySQL has gone away' error.

Hopefully this saves someone the trouble when deciding to use /dev/random entropy
To Top