万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    万年素人からGeekになるためのメモ

    Facebookアプリへユーザのemailや生年月日の情報の承認パラメータを追加する

    デフォルトではemailや生年月日はFQLを使っても取れない。

    分かりやすいFacebook開発者へのサイト(in 日本語) によると・・・
    「&scope=email,read_stream」でユーザに承認させないといけないようだ。

    https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream

    承認させるパラメータの名前は↓のサイトを参考にする。
    http://developers.facebook.com/docs/authentication/permissions/

    「FacebookOAuth」で実践
    以前のブログでは「Do Ruby!さんのやり方 」を行ってた


    Ruby(Rails)のFacebookOAuthモジュールでのパラメータの渡し方は「authorize_urlの設定 」が詳しい。



    authorize_urlを今まで使っていたがおそらくそこから飛ぶようだ。
    (1) [Hide source]を押してみよう。→ソースの中身が見える
    (2) 何もしなかったときのデフォルト引数はこんな感じだね

    authorize_url(options = {})
    

    →つまり、ハッシュ型でパラメータを受け取るのだ。

    {:hoge => 'foo', :bar => 'hogehoge'}
    

    (3)↓ではデフォルトはscopeがoffline_accessになっている
    ・options[:scope]がnilだったら'offline_access,publish_stream'を入れて、options[:scope]が設定されてたらoptions[:scope]を使おうって意味。

    options[:scope] ||= 'offline_access,publish_stream'
    

    その処理のあとで、画像内の(3)のように :scope のkeyには、options[:scope]の value が入ってる。

    :scope => options[:scope]
    


    ↓みたいに実際に認証画面でもそうなってる。なぜか、scopeでなくてperm(permissionかな?)だけど


    Do Ruby!さんのところでは↓のように使ってたと思う
    ・app/controllers/application_controller.rb

    redirect_to @client.authorize_url


    これを↓みたいに修正してFACEBOOK_SCOPE定数を渡す。
    ・app/controllers/users_controller.rb

    redirect_to @client.authorize_url(FACEBOOK_SCOPE)


    FACEBOOK_SCOPEには↓のようにハッシュを設定
    ・app/controllers/application_controller.rb

    FACEBOOK_SCOPE = {:scope => 'email, user_birthday, read_stream'}

    こうするとOK!