連日Reddit用専ブラが現れるというすごい(私からすると複雑な)状況になってきました。そしてOAuth2認証に対応する方もいて、使ってみるとものすごくアクセスが早いです。これは対応する他ないと考えを改めました。
自分のアプリにブラウザを埋め込んでOAuth2認証をするアプローチだと、普段使っているウェブブラウザに処理を投げる場合と違って、入力されたパスワードをアプリ側が見ることが出来ないという特徴はなくなってしまうと思うのですが、普段使っているウェブブラウザとアプリを連動させるためにはレジストリの書き換えが必要となることもあり、どちらを選ぶかという問題になります。
OAuth2の仕様によれば埋込み型ブラウザを使うべきではないというのはSHOULDとなっておりMUSTにはなっていないですし、ユーザーIDとパスワードを打ち込ませる今のスタイルはセキュリティ上最悪で、Redditからも8月からは禁止と通達されている方法なので、今よりはベターになります(一時間おきの再認証のためのボタンクリックを除けば、ですが)。一時間おきのクリックで今のアクセスの遅さから解放されるのであれば充分なトレードオフになりうるのではないかと考えています。
一時間おきに認証用ページに飛ばされてクリックをお願いされるのは、もちろん不満に思われる方も大勢いらっしゃると思いますが、今の仕様だとご容赦をお願いする以外にできることはないと思われます。どうかよろしくお願いいたします。
OAuth2には、アクセストークンが失効したら、いちいち、ユーザーに再び許可求める事なしに、
返信削除アクセストークンを再発行してもらう仕組みがあって、redditもそれに対応してるから、1時間おきに認証用ページに飛ばす必要はない。最初の1度だけで十分。
OAuth2のAuthoriztion Code Grant Flow使うときに、duration=permanentというパラメータを渡すと、アクセストークンとともに永続的なリフレッシュトークンが発行されるから。
リフレッシュトークンを保存すればいい。
で、アクセストークンが失効して新しいトークンが必要な時は、リフレッシュトークンから新しいアクセストークンをユーザーの介入なしに取得できる。