質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1867閲覧

WindowsLiveのoAuth認証について質問です。

kk-nb

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2014/11/12 06:45

WindowsLiveのoAuth認証について質問です。

現在、MicrosoftさんよりSDK「webauth-php-1.2.tar.gz」を
DLし、コレに含まれる「windowslivelogin.php」を使用して
oAuth認証を実装しております。

ログイン画面は、windowslivelogin.phpにある、
getLoginURL()によって取得したURLへリダイレクト、
MicroSoftさんのログイン画面を表示しております。

MicroSoftさんのログイン画面より、ログイン完了後、
コールバック処理でこちらのプログラムがコールされ、
その中で$_REQUESTに含まれる情報を取得、
認証チェックをしております。

そこで質問ですが、この方法だと
APIの利用登録のアカウントでログインを行った場合は、
$_REQUEST['action']に'login' がセットされているのですが、
他のアカウントだと$_REQUEST['action']に何もセットされません。

他のアカウントでログインしても$_REQUEST['action']に
'login'または、'delauth'をコールバック処理で受け取るようにするにはどうすればよいでしょうか?

getConsentUrl()を使用してみましたが、
これで取得したURLへのリダイレクトはできませんでした。
(consent.live.comが見つからない)

引き続き調べておりますが、解らず困っております。
ご存じの方よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

参照しているサンプルが古いような気がします。
https://github.com/liveservices/LiveSDK-for-Windows/tree/master/src/Web/Samples/OAuthServer/PHP/OauthSample
これではないでしょうか?
使えるかどうかはわかりませんが…

投稿2014/11/12 07:43

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kk-nb

2014/11/13 00:23

TaMaMhyu さん はじめまして。 ご返答ありがとうございました。 お教えいただいたサイトのサンプルの方法でもイケそうですが、 現在の方法で、なんとかイケそうです。(※これから試しますが・・・(^^;) うまく行かなかった要因は、おそらく APIの利用登録のアカウント以外のアカウントでログインした場合、 MicroSoftさんのログイン画面より、IDとパスワードを入力し、 ログイン後「https://account.live.com」へリダイレクト、認証承諾の画面を 表示して、そこで承諾させるというフローが必要でした。 私のプログラムでは、認証完了前は、「http://login.live.com」とその画面に関連する URL以外のサイトへアクセス出来ないよう制限かけていた為に、うまくいかなかったと 思われます。 「https://account.live.com」へのアクセスも可能な状態にして、確認してみます。 これでもダメだったら、TaMaMhyu さんより教えていただいたサイトのサンプル 方法で回避したいと思います。 ご指摘のとおり現在の方法は古く、提供されているSDK「windowslivelogin.php」には php5.2以降?だったかな・・非推奨メソッドも使用されておりこのままも好ましくないのですが、時間の都合で直近は現在の方法で行きたいと思います。 早々のご返答感謝です。ありがとうございました。
kk-nb

2014/11/13 02:32

TaMaMhyu さん 私の方法で再度試してみましたが、結果ダメでした。 認証承諾の画面「https://account.live.com」へアクセス出来たとしても 承諾はアカウントIDとなるメアドに本人確認メールが送信され 受信メールより、再度ログイン画面を表示しそこからログインしないと、結局コールバック処理が 呼ばれません。 (認証承諾の画面より、TwitterとかGoogleみたいに「承諾」ボタン押下でコールバック処理が呼ばれればよかったのですが、メール送信とは・・・) この流れだと自身の想定していた認証処理フローにはまりませんので、方法を変えて対応することにします。 TaMaMhyu さんより教えていただいた方法と、以下サイトのものを参考に新たに作り直しです。 https://github.com/philsturgeon/codeigniter-oauth2/blob/master/libraries/Provider/Windowslive.php Twitter、Google、アカウントでのoAuthは技術情報も多く助かりましたが、WindowsLive oAuthには 苦戦してます。 以上、ありがとうございました。
kk-nb

2014/11/17 09:30

TaMaMhyu さん TaMaMhyu さんより教えていただきましたサイト情報の「callback.php」を改良し、 新たに「winlivelogin.php」を作成、コレにログイン画面のURLの作成メソッドを 追加、使用したものを使用したところ、問題が解決いたしました。 ログイン画面のURLの作成メソッドは以下のように作成、実装してみました。 public function getOauthLoginUrl() { $url = 'https://login.live.com/oauth20_authorize.srf'; $url .= '?client_id=' . 'クライアントID'; $url .= '&scope=' . 'wl.basic%20wl.offline_access%20wl.signin'; $url .= '&response_type=' . 'code'; $url .= '&redirect_uri=' . 'コールバックURL'; return $url; } 以上です。 この度は回答いただきとても助かりました! ありがとうございました!
guest

0

投稿2014/11/13 02:31

kk-nb

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問