sfMelodyPluginを試す その1

2011年7月2日 Posted by PURGE

※注意 この記事は現在調査を進めながら記述していますので、完全な情報ではありません。

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です