1

ユーザーの操作を必要とせずにOffice365電子メールからデータをロードしようとしています。 Azure Appを作成しました。クライアントIDとクライアントの秘密があります。 私はまた、ユーザー情報(電子メール+パスワード)を持っています。ログインリダイレクトを使用しないOffice365認証

メールボックスからメールをダウンロードするには、Office365 APIを呼び出す必要があります。しかし、私はメールボックスに認証/ログインするためにユーザーの操作(MS/Office365ログインページにリダイレクト)せずにバックグラウンドでダウンロードするアプリケーションが必要です。

リダイレクトを必要とせずに、Office APIを通じてのみこれを行う方法はありますか?

ありがとうございました。

+2

でMicrosoftグラフを呼び出すことについて、詳細はhereを参照してください。 libにUserCredentialワークフローが含まれていますが、何を試したのか、コードに問題があるのか​​を具体的に説明する必要があります。 –

答えて

1

はい、クライアント資格情報フローを使用してデーモンサービスアプリを作成して、アプリを認証できます。

string clientId = ""; 
string clientsecret = ""; 
string tenant = ""; 
string resourceURL = "https://graph.microsoft.com"; 
string authority = "https://login.microsoftonline.com/" + tenant + "/oauth2/token"; 
string userMail = "[email protected]"; 

var credential = new ClientCredential(clientId, clientsecret); 
AuthenticationContext authContext =new AuthenticationContext(authority); 
var authResult = await authContext.AcquireTokenAsync(resourceURL, credential); 
var graphserviceClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
    (requestMessage) => 
    { 
     requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", authResult.AccessToken); 

     return Task.FromResult(0); 
    })); 

var items = await graphserviceClient.Users[userMail].Messages.Request().OrderBy("receivedDateTime desc").GetAsync(); 

foreach (var item in items) 
{ 
     Console.WriteLine(item.Subject); 
} 

そして、私たちはアズールADポータル上のアプリを登録して、アプリMail.Read範囲を付与する必要があります。ここでは

は、このフローを使用してMicrosoftグラフSDKを使用してメールを取得するためのコードサンプルです下図のように: enter image description here

はい、あなたがADALを通して行うことができ、サービスまたはデーモンアプリ

+0

ありがとうございます。そのコードとclientId、clientSecretとtenantIdデータを使って私はOffice365 Appを認証することができました。しかし、もし私が誰かのメールにアクセスすることができれば、セキュリティ上のリスクは大きいのですが、私が "すべてのメールボックスでメールを読む"許可を私のアプリケーションに許可すれば、私は恥ずかしいですか?私は次のようなものが必要になります: "それらのメールボックスを読む:..."。とにかくあなたのソリューションをありがとう、あなたは地獄のように素晴らしいです:) – Mastenka

+0

あなたは**あなたのクライアントの資格**が自信を持っている必要がありますので、特定のメールにアクセスするアプリを制限する必要はありません。あなたはあなたのアプリに必要なサービスを公開することができます。私もそれを説明[ここ](http://stackoverflow.com/questions/38397981/restrict-office365-app-read-mail-in-all-mailboxes-permission-to-specific-mailb) –

関連する問題