> データベースに保存したいのですがプラグインではプロテクトがかかっており、上手く取得できません。
「プロテクト」とはなんでしょうか?
サイト管理者以外のトークンはいまのところ保存しない仕組みになっています。
保存したい場合は、次のようにしてください。
// このアクションはユーザーがtwitterに接続したとき
// 実行されます
add_action('wpg_connect', function( $user_id, $oath, $service_name){
if( 'twittwer' == $service ){
// $oath はTwitterOAuthクラスのインスタンスです。
$token = $oauth->token->key;
$key = $oauth->token->secret;
update_user_meta($user_id, '_twitter_access_token', $token);
update_user_meta($user_id, '_twitter_access_token_secret', $secret);
}
}, 10, 3);
これで保存自体は可能です。
あとは次のような機能を実装する必要が有ります。
- トークンを使ってつぶやく
- トークンが有効期限切れの場合は適宜リフレッシュする
いまのところ、管理者ではなくユーザーのトークンを保存するような仕様は考えていません。開発に時間がかかる割に、私が使わない機能だからです。
早速の回答ありがとうございました!
すいません、プロテクトという表現が悪く申し訳ありませんでした。
$twitter = \Gianism\Service\Twitter::get_instance();
でシリアライズされたアクセストークンとアクセストークンシークレットらしきものは取得できるようなのですが、上手く取り出せなかったという意味です。
また頂戴したソースコードをfunctions.phpに掲載したのですが、こちらもmySLQを見てみるとnullになっていたのですが、何か原因がありますでしょうか??
※
update_user_meta($user_id, ‘_twitter_access_token_secret’, $secret);
↓
update_user_meta($user_id, ‘_twitter_access_token_secret’, $key);
に変更しましたが同様でした。
申し訳ありませんが、ご教示いただけると幸いです!
> ログインしたユーザーのアカウントでツイートする機能
ということですので、まず簡潔にお答えすると、そういう機能はないです。
Gianismが保存するアクセストークンとアクセストークンシークレットは「サイトにつき一つ」です。これは管理画面の「Gianism設定」から保存する項目です。
http://example.com/wp-admin/options-general.php?page=gianism&view=advanced
管理画面の上級者設定につぶやくことができるという表記がありますが、これはサイトに設定したアカウントです。
ご要望を叶えることは可能なのですが、かなりコードをたくさん書かなくてはいけません。
- ユーザーがログインまたは登録したときにアクセストークンおよびアクセストークンシークレットを保存する
- ユーザーがアプリ連携を解除した時に上記2つの情報を削除する
- アクセストークンが期限切れになっていたら更新する
- 様々な例外処理
これらすべてをこのスレッドで説明するのはあまりにも労力が大きく、私もそこまで暇ではないので、今後のアップデートにご期待ください。
なるほどですね。ログインしたユーザーに自動でフォローさせる処理などされていたので、アクセストークンは取得されているはずなのでそれを一時的に取り出したかったのですが。。。