私は別のエンドポイントへのMicrosoftグラフへの多数の呼び出しでページを作成しています:などOneDriveファイル、電子メール、ユーザーのプロパティを取得するには、マイクロソフトグラフAPI - 403 v1.0を/私/イベントのために禁止
1つの呼び出しでは、現在のユーザーのカレンダーイベントを取得できません。私が使用しているエンドポイントはhttps://graph.microsoft.com/v1.0/me/events
です。応答は403禁止です。
アプリケーションがCalendars.Read
かCalendars.ReadWrite
許可を必要とするMicrosoftのドキュメントhereによります。私はの下にパーミッションを委任して、これらの両方をチェックしました。私はその後、このアプリのためにAzure ADのすべての51の許可スコープにチェックを入れましたが、それと同じ問題です。
私はまた、AzureのADで新しいアプリを作成しようとしたが、これは助けにはなりませんでした。
Microsoft Graphを使用して現在のユーザーのカレンダーイベントを取得するにはどうすればよいですか?私は何が欠けていますか?
EDIT:
私は認証にADAL.jsを使用しています。これは私が自分のdoAuth
アプリケーションのクライアントIDを取り込む関数で持っているコードです。
function doAuth(clientId) {
var variables = {
// Domain of Azure AD tenant
azureAD: // the appropriate URL,
// ClientId of Azure AD application principal
clientId: clientId,
// Name of SharePoint tenant
sharePointTenant: // the appropriate URL
}
// Create config and get AuthenticationContext
window.config = {
tenant: variables.azureAD,
clientId: variables.clientId,
postLogoutRedirectUri: window.location.origin,
endpoints: {
graphApiUri: "https://graph.microsoft.com",
sharePointUri: "https://" + variables.sharePointTenant + ".sharepoint.com",
},
cacheLocation: "localStorage"
}
var authContext = new AuthenticationContext(config);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
if (isCallback && !authContext.getLoginError()) {
window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
}
var user = authContext.getCachedUser();
var token = authContext.getCachedToken(clientId);
if (!user || !token)
authContext.login();
return authContext
}
login.microsoftonline.comから取得したJWTトークンに、必要なスコープが含まれているかどうかを確認しましたか? – RasmusW
@RasmusWスコープのトークンを調べる方法を教えてください。 'AuthenticationContext'オブジェクトで使用する必要があるメソッドはありますか? – Submits
私はそれを手動で行うことを意味しました。あなたはjwt.ioやjwt.calebb.netのようなサイトを入手してデコードすることができます。最後のものは、もしそれらが標準JWTであれば、それぞれのプロパティに関するいくつかのドキュメントを含んでいます。 – RasmusW