※注意 この記事は現在調査を進めながら記述していますので、完全な情報ではありません。
Symfony1.4 で連携しようと思ってたどり着いた sfMelodyPlugin。
Symfony1.4 の使用方法も間々ならないままにplugins/sfMelodyPlugin ディレクトリにインストール。中にある英語のREADME.txt を読んでみる。
一般的には下記のコマンドでインストールできるようだが、PEARが効かない環境なので一式配置。
$ php symfony plugin:install sfMelodyPlugin
キャッシュをクリアして、
$ php symfony cc
sfMelody を settings.yml に設定する。
ちなみに、Doctrine使用の場合、sfDoctrineOAuthPlugin と sfDoctrineGuardPlugin が必要らしい。
sfMelody と同様に pluginsディレクトリに配置した。
all: .settings: enabled_modules: [default, sfGuardAuth, sfMelody]
適用するアプリケーションにあるmyUser.class.php の継承元を変更する。
apps/my-app/lib/myUser.class.php:
class myUser extends sfMelodyUser //class myUser extends sfBasicSecurityUser { }
app.yml を設定する。
all: melody: create_user: false # 対象サービス(twitter等)に接続した時にログオンできない場合新規作成するかどうか redirect_register: false # 登録画面にリダイレクトするかどうか twitter: #name key: my_service_key # twitter で発行されたコンシューマー・キー(API key)を記述 secret: my_secret_key # twitter で発行されたコンシューマー・シークレットを記述 callback: @mymodule_index # コールバックURLを記述 #オプション (↓↓↓↓↓調査中↓↓↓↓↓↓) user: # to create an user field_1: call: xx call_parameters: [x, x, x] path: xx.xy.zz prefix: xx_ suffix: _xx key: false ... provider: twitter #対象サービス名 (他google / facebook等) request_token_url: https://api.twitter.com/oauth/request_token # リクエスト・トークンURL request_auth_url: https://api.twitter.com/oauth/authorize #URLを許可する access_token_url: https://api.twitter.com/oauth/access_token #アクセス・トークンURL # (↓↓↓↓↓調査中↓↓↓↓↓↓) namespaces: # namespaces are used to make some api calls - see namespace Section ns1: http://my.name.space ... aliases: # Alias is an easy way to simplify api calls me: my/alias ... auth_parameters: param1: value call_parameters: param1: value access_parameters: param1: value output_format: json create_user: true redirect_register: false #optional only for OAuth 1 request_parameters: param1: value request_token_url: https://api.twitter.com/oauth/request_token # リクエスト・トークンURL
まだ何もわからないまま、アプリケーションを実行してみる。呼び出すべき actions.class に接続のアクションメソッド(executeIndex)とCallbackを受けるアクションメソッド(executeShow)を記述。
public function executeIndex(sfWebRequest $request) { $this->getUser()->connect('twitter'); //nameで指定した名前 } public function executeShow(sfWebRequest $request) { $this->me = $this->getUser()->getMelody('twitter')->getMe(); }
それに伴いrouting.yml も設定する。
twitter_callback: url: /:module param: { action: show }
すると、何やら sfOAuth1 が見つからないとのエラー。実際のファイルが sfDoctrineOAuthPlugin に無いのかなと予測したらやはり無い。どうやら OAuthBase のモジュールが別途必要なようだ。急いでダウンロードしたらこのエラーは無くなった。
しかし次のエラー
Fatal error: Call to undefined function curl_init()
どうやらphpにて、cURLが有効になっていない模様。
php.ini で同モジュールを有効にしてApacheの再起動したらtwitterページにリダイレクトできました。
エラー画面なので連携とまではいけませんでした。
まだまだ、完全な連携には程遠いのですがちょっと感動です。
続きは後日・・・。
■参考サイト
Symfohub