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

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

ただいまの
回答率

90.51%

  • PHP

    24054questions

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

  • API

    1824questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

PHPで自分自身のOneNoteの内容を取得したい(OneNote API)

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 390

hiyokoman

score 2

PHPで自分自身のOneNoteの内容を取得したいと思っています。
https://msdn.microsoft.com/ja-jp/office/office365/howto/onenote-auth
を参考に進め、

https://apps.dev.microsoft.com/#/appList
の「アプリの追加」から、クライアントID(アプリケーションID)を取得し、
「プラットフォームの追加」で「Web」を追加、
「暗黙的フローを許可する」にチェックを入れ、
リダイレクトURL 、ログアウトURLに自分のサイトのURLを入れて保存。

この状態で下記のURL内容を取得
https://login.live.com/oauth20_authorize.srf?response_type=token&client_id=【クライアントID】&redirect_uri=https://login.live.com/oauth20_desktop.srf&scope=wl.signin office.onenote wl.offline_access

という手順を踏みました。

これで自分自身のOneNoteにアクセスするためのコードみたいなものが発行されるのかと思ったのですが、
結果はMicrosoftのログイン画面が出現し、誰のMicrosoftアカウントでもログインが出来るようなソーシャルログインのような感じの状態になっており戸惑っています。

上記のやり方では自分自身のOneNoteにAPIでアクセス出来ないのでしょうか。
使用方法をご存知の方、ご教示頂きたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2018/02/11 10:39

    ちょっと確認 [User.Read] のある場所に [Notes.Read] はちゃんとあるよね?

    キャンセル

  • asahina1979

    2018/02/11 10:45

    グラフじゃないかもしれないからこっちもだしておくか https://msdn.microsoft.com/ja-jp/office/office365/howto/onenote-auth#onenote-perms-msa で [office.onenote*] の権限とか

    キャンセル

  • hiyokoman

    2018/02/11 18:59

    ありがとうございます。Notes.Readは今のところ入れていませんが、リダイレクトでaccess_tokenを取得するところまではいけました。OneNoteの内容を取得するところまで進んだらこの辺りのアクセス許可も見てみます。

    キャンセル

回答 2

+2

OneNote の認証とアクセス許可を読みましたが、記述範囲において、特に API としておかしな挙動は無いと思います。
クライアント ID をユーザ識別の ID と勘違いしていませんか?
クライアント ID はアプリケーション識別用の ID です。

ログインが終わった段階で、access_token がリダイレクト先に通知されます。 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

どうもありがとうございます。
試行錯誤したところ、「&redirect_uri」をURLに指定していたのがまずかったようです

指定を外し、
一回ブラウザでそのURLにアクセスすると、アクセスを許可するか確認する旨の画面が出るので許可をし、

下記のようなソースにてリダイレクト先のURLが取得出来そうです。

<?php
$base_url = 'https://login.live.com/oauth20_authorize.srf?response_type=token&client_id=';
$client_id = 【クライアントID】;
$scope = 'wl.signin%20office.onenote%20wl.offline_access';

$url = $base_url . $client_id . '&scope=' . $scope;

$headers = get_headers($url, 1);
echo $headers['Location'];
?>

ただ、get_header関数が何故かリダイレクト先のheaderを返してきてしまい、$headers['Location']でリダイレクト先のURLを取得することができず、ここでまた詰まってしまいました。

一先ず今回の質問の件については解決ということで、
新たな問題については、別で質問を立てさせていただきますので、
もしご存知でしたらご回答いただけますと幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    24054questions

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

  • API

    1824questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。