2016-08-05 12 views
2

OneDrive APIを認証しようとすると、Microsoftアカウントにログインするように要求されますが、APIの目的を破棄しません。OneDriveのコードフローがMicrosoftアカウントにログインするように要求しています

私のスクリプトをAuth Code URLにリダイレクトします。Auth Code URLはアクセストークンを要求するための一意のコードを返します。私のMicrosoftアカウントにログインしているときはうまく動作しますが、ログインしていないときはMicrosoftのログインページに表示されます。

私が使用していますURLは

https://login.live.com/oauth20_authorize.srf?client_id=MYCLIENTID&scope=onedrive.readwrite offline_access onedrive.readonly onedrive.appfolder&response_type=code&redirect_uri=MYREDIRECTURL 

ここでEDIT

は、APIを使用すると、ユーザのファイルを管理することができます私は

$auth_code_url = 'https://login.live.com/oauth20_authorize.srf?client_id='.$od_app_id.'&scope=onedrive.readwrite offline_access onedrive.readonly onedrive.appfolder&response_type=code&redirect_uri='.$url_website; 

header("Location: ".$auth_code_url); exit(); 
+0

そのURLではありません。認証を行うために使用しているコードを投稿する必要があります。 – Takarii

+0

コード例を追加しました。ありがとうございます。 –

答えて

1

をリダイレクトするために使用していますPHPコードでありますその代わりに、アプリケーション/サービス用のOneDriveアカウントを作成しません。

ユーザーのファイルを管理するには、ユーザーのファイルを管理するために、ユーザーのファイルを管理する必要があります。概念的には、これはユーザーがlogin.live.comと話し、「私はUserXだ、私の証拠はここだ」と言うことを意味する。 login.live.comは、「このユーザーはUserXだと信じている」というトークンを返します。ユーザーはこのトークンをサービスに提供します。OneDriveの要求を行うと、「UserXが自分のファイルを管理する権限を与えました」というトークンを提供できます。

ユーザが既にログインしている場合、ブラウザにはすでに認証cookieが保存されているため、login.live.comはログインのプロンプトを表示せずにコード/トークンを返します。ユーザーがログインしていない場合、login.live.com(およびあなたのサービス)は、ユーザーが誰であるか分かりません。そのため、ユーザーのIDを取得/確認するログイン画面を表示して、変更するファイルを知る必要があります。

関連する問題