2012-08-31 3 views
5

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

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

私はGoogle Docs(How do I connect to the Google Calendar API without the oAuth authentication?)についてこのような質問をしました。その質問に対する答えは、一時的なスクリプトをセットアップして、認証に繰り返し使用できる更新トークンを取得することでした。私はそれを試み、それは働いた。ただし、リフレッシュトークンがどれくらい持続するか、そして同じメソッドがSkyDrive APIで動作するかどうかはわかりません。

編集:いくつかのより多くの研究を行った後、ライブ接続ドキュメント(http://msdn.microsoft.com/en-us/library/live/hh826540は) を言う:

ユーザーが同意を提供した後、ライブ接続アプリにあなたをすることができ、特別なコード、またはアクセストークンを与えますアプリは彼または彼女が同意したユーザー情報のその部分で作業します。通常、このアクセストークンは約1時間有効です。この時間が過ぎると、アプリはユーザーの情報を使用して処理できなくなります。ユーザーは再度サインインと同意のプロセスを踏む必要があります。この問題を回避するには、ユーザーにwl.offline_accessの有効範囲に同意するように依頼することができます。これにより、アプリがリフレッシュトークンと呼ばれるコードを追加して、ユーザーがサインアウトした後でも(通常1年まで)アプリが新しいアクセストークンを取得できるようになります。ただし、ユーザーはいつでもアプリのアクセスを取り消すことができます。ユーザーがアプリの同意を取り消すことを選択した場合、対応するアクセストークンやリフレッシュトークンは機能しません。アプリは、ログインと同意のプロセスをもう一度やり直さなければならないことをアプリに要求する必要があります。

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

+0

私は彼らのことがfbのようなものだと思いますか?それはちょうど繰り返されます。トークンを保存しておくと、長期間に渡って動作するはずです。あなたはあなたのログインページを少なくとも1回は表示しなければなりません。あなたはそれを無許可にすることはできません。 – Sammaye

+0

@Sammaye私が言うことができる限り、訪問者はskydriveにログインする必要はありませんが、サイトの所有者が設定した1つのアカウントでログインし、そのアカウントに関連付けられたファイルをリストしてファイルを共有します。そのサイトのskydriveアカウントのファイルを一覧表示/共有し、自分のサイトから資格情報を提供します。 –

+0

@JonathanKuhnはい、それはそのように読むことができる、彼は明確にする必要があるかもしれないかもしれない – Sammaye

答えて

1

OAuth 2には、このための正確なフローがあり、Client Credentials Grantと呼ばれています。あなたの他の質問にthis answerで述べたようサービスは、クライアント証明書アカウントで

Googleはすでにこれを実装しています。

implement that flowではありません。そのため、現在のところ、Googleドキュメントで既に使用している回避策を使用することをおすすめします。

+0

答えをありがとう。回避策がSkyDriveに最適なオプションであると思われます。しかし、リフレッシュトークンが期限切れになった場合、たとえそれが1年に1回であっても、それをやり直す必要があります。 –

関連する問題