5

Web サイトのクラウド ストレージとして SkyDrive を使用したいクライアントがいます。この Web サイトは、SkyDrive アカウントのサイトのユーザーにファイルを表示するように要求するのではなく、Web サイトの所有者が SkyDrive にいくつかのファイルを保存し、自分のサイトにログインしているユーザーとそれらを共有したいと考えています。私の質問は、Web サイトのバックエンド PHP コードから直接 SkyDrive API に資格情報を送信するにはどうすればよいですか?

Live Connect の API ドキュメント ( http://msdn.microsoft.com/en-us/library/live/hh243647.aspx ) は、ユーザーの資格情報をサービスに送信するためのログイン フォームをユーザーに提示することに重点を置いているようです。繰り返しますが、それは私が望んでいることではありません。Web サイトのユーザーは何もする必要はありませんが、ページに移動すると、SkyDrive アカウントからミラーリングされたファイルが表示されます。資格情報はサーバーに保存し、ユーザーがページを要求したときに送信する必要があります。

Google ドキュメントについて、これと同様の質問をしました ( oAuth 認証なしで Google カレンダー API に接続するにはどうすればよいですか? )。その質問に対する答えは、一時的なスクリプトをセットアップして、認証に何度も使用できる更新トークンを取得することでした。私はそれを試してみましたが、うまくいきました。ただし、リフレッシュ トークンの有効期間と、同じ方法が SkyDrive API で機能するかどうかはわかりません。

編集: さらに調査を行った後、Live Connect Docs ( http://msdn.microsoft.com/en-us/library/live/hh826540 ) は次のように述べています。

ユーザーが同意した後、Live Connect はアプリに特別なコードまたはアクセス トークンを提供します。これにより、アプリはユーザーの同意した部分の情報を操作できます。通常、このアクセス トークンは約 1 時間有効です。この時間が経過すると、アプリはユーザーの情報を操作できなくなります。ユーザーにサインインと同意のプロセスを再度実行するよう求める必要があります。これを回避するには、ユーザーに wl.offline_access スコープへの同意を求めることができます。これにより、更新トークンと呼ばれる追加のコードがアプリに与えられます。これを使用して、ユーザーがサインアウトした後でも、通常は最大 1 年間、新しいアクセス トークンが必要なときにいつでも取得できます。ただし、ユーザーはいつでもアプリのアクセスを取り消すことができます。ユーザーがアプリへの同意を取り消すことを選択した場合、

つまり、更新トークンは 1 年間有効のようです。つまり、リフレッシュ トークンを取得して保存し、ページ リクエストごとにリフレッシュ トークンを使用してアクセス トークンを取得し、データを表示するようにリグを作成できます。ただし、年に一度、このクライアントの更新トークンを更新して保存する必要があります。それは正しいと思いますか?これが最善の方法ですか?

4

1 に答える 1

1

OAuth 2 には、まさにこのための特別なフローがあり、Client Credentials Grantと呼ばれます。

他の質問に対するこの回答で述べたように、Google はすでにサービス アカウントクライアント証明書を使用してこれを実装しています。

ただし、Microsoft はこれまでのところそのフローを実装していない ため、現時点で最善の方法は、Google ドキュメントで既に使用している回避策を使用することです。

于 2012-09-03T17:49:11.257 に答える