一定期間更新がないため広告を表示しています
2014.08.06 Wednesday
一定期間更新がないため広告を表示しています
-||-|-|by スポンサードリンク
2012.03.21 Wednesday
2014年8月6日追記
コードに関しては著作権侵害とみなされて削除された様です。
---- 追記ここまで ----
意味不明なタイトルです。
先日、アップデートされて PC でも利用可能になった LINE ですが、タブレット版は Web アプリケーションと言う事もあって、非公式ながら API が存在しています。
タブレット版:https://t.line.naver.jp/
Skype や、MSN メッセンジャーと違って退席中や取り込み中の様なステータスがないので、メッセージが来て、ある一定時間未読状態だったら自動で「退席中です。」と返信する様にハックしてみます。
タブレット版の認証の仕組みから、自分は node.js を選択しました。
※選択理由は後ほど記述します。
node.js v0.4.10
使用モジュール:require v2.9.153
まずは下にアクセスして、セッションキーと RSA キーを取得します。
https://t.line.naver.jp/authct/v1/keys/line
▼取得した内容
session_key は、アカウントのメールアドレスとパスワードを組み合わせて使用します。rsa_key は、その組み合わせた物を暗号化する際に使用します。
サーバ側に送信する内容は、先程取得したセッションキー(session_key)と、認証の為のメールアドレス、パスワードを組み合わせた文字列です。下の様に組み合わせます。
文字列の長さをアスキーコードにしてるのは、各文字列の長さを示す為かと思われます。
LINE は、暗号化を JS のみで行なっていますが、独自の物ではなく、ライブラリとしてネット上で公開されている物を使用しています。
※自分が node.js を選択した理由は、このライブラリを利用する為です。
暗号化ライブラリ:RSA and ECC in JavaScript
node.js の場合、jsbn.js、rsa.js、rng.js、prng4.js を組み合わせて、モジュールとして使用します。
https://gist.github.com/2144164#file_rsakey.js
※コードが長いので、リンクのみ載せます。
var RSAKey = require('./rsakey.js'); などとして読み込んでください。
ライブラリを読み込んだ後は、RSAKey を使って暗号化します。先程取得した rsa_key をカンマ区切りで分割し、左から keyname, evalue, nvalue と言う変数に代入した後、下の処理を行なってください。
これで暗号化処理は終わりです。
送信先は https://t.line.naver.jp/rest/v1/login とし、POST で送信してください。
送信内容は以下のとおり
【注意点】
送信の際は、ユーザーエージェントに注意してください。
一部のユーザーエージェントは、サポート対象外とみなされて別ページへ飛ばされてしまいます。
リクエストヘッダに User-Agent: Chrome などを指定して送信してください。
うまくいけば、これでログインが成功します。
一つのアカウントしか認証出来ないと思うので、変な実装ですけど
node.js と cron が使えるので、dotCloud を活用しました。
なお、dotCloud での cron の設定等は省きます。
よし、うまくいった!と思ったのですが、繰り返しリクエストを投げていた所為か、LINE からブロックをされたみたいです。仕方ないですね。南無
リクエストの投げ過ぎには注意しましょう。
2012年4月7日追記
アカウント停止されたっぽいです。
JavaScript|13:00|comments(4)|trackbacks(0)|by ニノミヤ カズノリ
2012.03.08 Thursday
【12/07/02】Validation クラスを継承しないやり方を追記しました。
FuelPHP のバリデーションには、他のフィールドと値が同じかどうかをチェック出来る match_field と言うルールが用意されています。
使い所としては、メールアドレスの入力確認、パスワードの入力確認などで使えます。
大変便利ですが、一点問題があります。
それは、入力時の値にしかマッチしない点です。
つまり、add_rule をフィルタとして扱った場合はマッチしないと言う事です。
実際の例を下に挙げてみます。
▼結果
string(72) "メールアドレス(確認)は、email1と異なっています。"
bool(true)
正しくマッチする様に、新たなルールを考えてみました。(以下の方法は、add_callable を使ってではなく、¥Fuel¥Core¥Validation を継承して実現させている点に注意してください。)
▼結果
bool(true)
match_validated_field は、バリデート後の値を元に比較を行いますので、結果は true となっています。
Validation クラスを継承してのルール追加が良い方法なのかは分かっていません。使用の際は自己責任でお願いします。
【追記:12/07/02】
よく考えたら、Validation#active を使えば、態々継承する必要なかった。
▼以下、修正後のソース
PHP|22:32|comments(0)|trackbacks(0)|by ニノミヤ カズノリ
2012.03.07 Wednesday
validation.php によるカスタムメッセージの設定は、決まった文言を出力する分には簡単でとても良いのですが、特定のフィールドで文言を替えたい場合には向きません。(変更したい Fieldset を取得して set_message する必要があるかと思います。)
例えば下の例では、お名前と性別を required に設定しています。
▼結果
string(39) "お名前を入力してください。"
string(36) "性別を入力してください。"
性別が入力式であれば良いのですが、多くは男性/女性の選択式です。すると、エラー文言としては「性別を選択してください。」が相応しいと感じます。
しかし、validation.php には既に required の文言が設定されている為、性別用の文言を追加する事ができません。大変不便です。
そこで自分が考えたのが次の方法
validation.php はそのまま。新たに言語ファイルを一つ用意します。
▼結果
string(39) "お名前を入力してください。"
string(36) "性別を選択してください。"
更に、別のルールにも他とは違う文言を設定したい場合は、下の様にします。
フィールドを追加したい場合は、下の様にします。
他に楽な設定方法があれば教えてください。
PHP|23:24|comments(0)|trackbacks(0)|by ニノミヤ カズノリ
page top▲ | 1/1PAGES |