スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

opensocial-php-clientでOpenPNEにアクセス

openpne-php-clientそのままだとOpenPNE接続できない。いろいろ試行錯誤してやっと動くコードになった。まずは初期化とログイン。
まず、既知のProviderないから全てパラメータ指定でProvider生成する。次いでosapiOAuth3LeggedではなくてosapiOAuth3Legged_10aを使わなきゃ駄目。

  $storage = new osapiFileStorage('/tmp/osapi');
  $provider = new osapiProvider(
      'http://sns.example.com/oauth/request_token',
      'http://sns.example.com/oauth/authorize',
      'http://sns.example.com/oauth/access_token',
      'http://sns.example.com/api.php/social/rest/',
      '',
      'OpenPNE',
      true
  );
  $auth = osapiOAuth3Legged_10a::performOAuthLogin('gpXXXXXXXXXXXXDE', 'XXXXXXXXXXXXXXXX@ZY86O71kXXXXXXX', $storage, $provider, $localUserId);
  $osapi = new osapi($provider, $auth);

osapiOAuth3Legged_10aは、以下の修正しないと動かなかった。修正したことで動くようになったけど正当性は不明。

$ diff osapiOAuth3Legged_10a.php.r174 osapiOAuth3Legged_10a.php
<80c80
<     $auth = new osapiOAuth3Legged($consumerKey, $consumerSecret, $storage, $provider, $localUserId, $userId);
---
>     $auth = new osapiOAuth3Legged_10a($consumerKey, $consumerSecret, $storage, $provider, $localUserId, $userId);
138,139c138,139
<     $accessRequest = OAuthRequest::from_consumer_and_token($this->consumerToken, $accessToken, "GET", $this->provider->accessTokenUrl, array('oauth_verifier' => $oauthVerifier));
<     $accessRequest->sign_request($this->signatureMethod, $this->consumerToken, $accessToken);
---
>     $accessRequest = OAuthRequest::from_consumer_and_token($this->consumerToken, $accessToken, "GET", $this->provider->accessTokenUrl, array('oauth_token' => $requestToken, 'oauth_verifier' => $oauthVerifier));
>     $accessRequest->sign_request($this->signatureMethod, $this->consumerToken, $requestToken);

OpenPNE 3.1 機能紹介 #3 - OAuth|OpenPNEのコードと突き合わせながら格闘すること一日。これだけの修正を見つけるのに時間掛かったぁ。OpenPNEのサンプルコードとほとんど変わらないのに、ちゃんとリダイレクトされなくていろいろ試行錯誤するしかなかった。サンプルコードはこのコードは XSS 脆弱性や変数汚染攻撃などに対して脆弱です。絶対にこのまま使用しないでください。らしんだけど、openpne-php-clientもそんなに変わらないから危険なのかねぇ。

スポンサーサイト

OpenSocial RESTful

所感

OpenSocial RESTful および OAuth は何よりも以下の3つのドキュメントを読むべきだった。日本語のいろいろな記事を読んだがもやもやして腑に落ちなかったのが、この3つのドキュメントですっきりクリアに。英語だけど難しくないし。1週間無駄にしちゃった。

プロジェクトホームドキュメント

OpenSocial REST Developer's Guide (v0.9) - OpenSocial


Social Website Tutorial (v0.9) - OpenSocial


OAuth Use Cases - OpenSocial


ライブラリ

opensocial-php-client - Project Hosting on Google Code


oauth - Project Hosting on Google Code


OpenSocial 資料

プロジェクトホーム

OpenSocial - Google Code


OpenPNE連携

OpenSocial with OpenPNE ― OpenSocial with OpenPNE v0.9.1 documentation


OpenPNE API|OpenPNE


opOpenSocialPlugin.rb

ここはプラグインの入れ方、設定、Shindigの設定など。


概要記事

OpenIDのRPとOAuth/OpenSocialの関係について - r-weblife


ウノウラボ Unoh Labs: OpenSocialを始めよう!第1回

ここで説明されている図を見てRESTfulの使いどころが腑に落ちた。


Tender Surrender » OpenSocial
Tender Surrender » OpenSocialのOAuthまとめ
Tender Surrender » OpenSocial(Shindig)のサーバーアーキテクチャ

なんかOpenSocial関連の記事を多く書いてらっしゃいます。


コード付き解説

八角研究所 : OpenSocialを始めよう(5) - 友達のデータを取得する


Google OpenSocial API - mixiに期待しつつJavaScript Gadgetを試す
MySpaceでOpenSocialアプリケーション "OpenIDクライアント" ー (1)
MySpaceでOpenSocialアプリケーション "OpenIDクライアント" ー (2)
MySpaceでOpenSocialアプリケーション OpenIDクライアント ー (3)

コンテナの内から外へOpenIDで出て行こうって話みたい。


mixi Developer Center (ミクシィ デベロッパーセンター) » プロフィール情報・マイミク情報を使ってみよう


opensocial-jquery

opensocial-jquery - Project Hosting on Google Code


opensocial-jqueryを使ってgooホームガジェットを作ろうとしてみた-OAuth認証-


OpenSocial API で Owner ID を取得する

ラボブログ : OpenSocial入門 アーカイブ
OpenSocial で Owner と Viewer の ID を取得する ( ラボブログ )

これ使えるかな。後で試してみよう。
いや、これ gadget で JavaScript だから。


<![CDATA[
<script type="text/javascript">
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest('OWNER'), 'owner');
req.send(function(data) {
  var owner = data.get('owner').getData();
  var oid = owner.getField(opensocial.Person.Field.ID);
});
</script>
<div id="displayId"></div>
]]>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。