ユーザーをflickrapiに対して認証するWebアプリがあります。OAuth 1.0を利用し、認証はほとんどの場合機能します。しかし、ランダムな時間、完全にランダムな時間に、flickrは私の署名を認識しません。リクエストトークンのリクエスト中に無効な署名エラーを返します。ただし、次の試行で同じコードを使用すると、リクエストトークンが適切に返されます。
ノンスやタイムスタンプの生成方法と関係があるのではないかと思います。そうでなければ、それは次の試みでは機能しないはずですよね?
これは、ナンスとタイムスタンプの値を生成する方法です。
$nonce = md5(microtime(true).rand());
$timestamp = mktime();
これに問題はありますか?ナンス値を生成するためのより良い方法はありますか?このランダムな失敗は非常に混乱を招きます。ランダムに無効なエラーが発生する他の理由は考えられません。
ファローアップ
Jan Gerlingerの提案に従って、mktime()をtime()に変更しました。それは確かに発生頻度を減らしました。しかし、それでもランダムな時間に無効な署名エラーが発生します。time()に変更した後は、ごくまれに追加する可能性があります。
したがって、timestamp(mktime)がこれらのランダムエラーの原因の1つであると想定しています。しかし、他の何かがまだそこでうまくいっていません。たぶんノンス世代?