2011/08/07

skydrive をプログラムから制御

 
skydrive をプログラムから制御するのに、SkyDriveServiceClient.v2.0.2b
使ってみた。
skydrive_common
言語は C# です。skydrive プロトコルの解析に利用したのですが、最初の
認証にて、何のパラメータを付与するのか https なので解析できなかった。
 
ライブラリとしては問題なし。ただしアップロードして生成された URL を取得
できないようなので、結局使う意味が無い。
 
解析結果を途中まで公開しますので、どなたか解析を…
◆1
POST http://docs.live.net/SkyDocsService.svc
 
まずは post アクセス。ここでは location と WWW-Authenticate を取得するのが目的。302 が必ず返却。user-agent などがあると 403 が返って来ます。

送信する content-type は text/xml ; charset=utf-8
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body>
<GetWebAccountInfoRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/clouddocuments">
<BaseRequest>
<ClientAppId>SkyDrive Service Client</ClientAppId>
<Market>en-US</Market>
<SkyDocsServiceVersion>v1.0</SkyDocsServiceVersion>
</BaseRequest>
<GetReadWriteLibrariesOnly>false</GetReadWriteLibrariesOnly>
</GetWebAccountInfoRequest>
</s:Body>
</s:Envelope>
     
◆2
Response 下記の HTTP ヘッダが返って来ます。
Location: https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=xxxxxxx&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fdocs.live.net:101%2FSkyDocsService.svc&lc=xxx&id=xxxxxxx
 
WWW- Authenticate: Passport1.4 ct=1312698601,rver=6.1.6206.0,wp=MBI,lc=1033,id=250206
    
 
◆3
2番に https でアクセスし CID と Authenticate を取得する。たぶん。
 
上記の3番の段階で止まってます。3番通過後は、ほぼ解決できそう。
 
この一連の流れとは別としてなら、Windows Live ID にログイン可能なのですが、
WebDav を使う手順での認証が不明。
 
WWW-Authenticate: 、メールアドレス、パスワード Authenticate  として
ヘッダに付与して POST すれば良いのだろうか?
 
または POST データ部として送る?
 
その場合メールアドレスなら login キーで良いのかな。だとするなら HTML から
解析しないと、メールアドレスのキーワード値がわからん。
 
WebDav の汎用手順での認証なのか Microsoft 固有の認証なのかも不明。
 
 
C#歴 3時間の自分に無理です。
これを読んだあなた。どうか真相を暴いてください。それだけが私の望みです。
 
追記: SkyDriveConnection で解決できそう。

0 件のコメント:

コメントを投稿