1

私はこれについて私の髪を引っ張っています、多分誰かが考えを持っています. ログインしたユーザーのアカウントに関連する Office 365 API からカレンダーとイベント データを取得する、Azure に登録された Web アプリケーションがあります。

ユーザーがシステムにログオンすると、更新トークンとアクセス + ID トークンが Office365 API から取得されます。アクセストークンをサーバーに直接送信でき、ユーザーイベントを確認でき、正常に動作しています。「ベース」oauth コードは、こちらのサンプル コードから抜粋したものです。これはアプリケーション内から行うこともでき、適切に機能しています。

これは特定のユーザーには適切に機能しますが、他のユーザーには機能しません。これらのユーザーの場合、システムはトークンを認証しますが、応答の「値」キーに NULL 値を返します。

  • 作業中のユーザーと非作業中のユーザーの間のサブスクリプションの種類は同じです (E1)。
  • 呼び出しを処理するコードは変更されず、「特定のユーザー」が通過する追加のプロセスはありません。それらはすべてローカル システムによって同じように扱われます。
  • 環境または変数の違いはありません。イベントを取得するアカウントもあれば、NULL 応答を取得するアカウントもあります。同じコンピューターでも。
  • いずれの場合も、有効なカレンダー イベントまたはメッセージがあります。

アクセス トークンが認証された後に発生する正確なサーバー レスポンスは次のとおりです。

(string(196) "{"@odata.context":"https : //outlook.office.com/api/v1.0/$metadata#Me/Events","value":[{"error":{"code":"ErrorInternalServerError","message":"Object reference not set to an instance of an object."}}")

(レピュテ​​ーションにより https の後にスペースが追加されました)

oauth サンドボックス ( https://oauthplay.azurewebsites.net/ )にユーザーとしてログインすると、システムは常に適切な結果を返します。Office365 から渡されるアクセス トークンは正しくないと思われますが、ユーザー間に共通のリンクがない特定の状況でのみ失敗するようです。

これが起こる可能性のある理由を考え出そうとしています。誰かが何かアイデアを持っているなら、私はすべて耳にします。

4

2 に答える 2