0

私はOutlookアドインを開発しています。これはJSベースで、OAuth2を使用してユーザーを認証します。私はポップウィンドウを使用してGoogleのような認可のページを開くために、青空...成功ログイン後私はそれを閉じます。アプリケーションに戻るには、window.openerプロパティを介してアクセス可能なポップアップの親ウィンドウにコールバック関数を登録します。すべてうまくいきますが、私はモバイルデバイスをサポートしたいと思います。 この種類のアドインを実行するには、Playストア経由でダウンロードできるOWA for Devicesアプリが必要です。 問題はwindow.openerプロパティは常にnullです。だから私は申し込みに戻ることができません。 アプリケーションにコールバックする方法は他にありますか?ポップアップの親ウィンドウにアクセスするには?OAuth2認証jsクライアント

+0

JSでOutlookアドインを作成すると、OAuthを作成する理由は何ですか?あなたはそれなしでoutlook rest APIを作ることができます。こちらをご覧ください:https://dev.office.com/docs/add-ins/outlook/use-rest-api?product=outlook – OriEng

+0

@OriEngこのアプリケーションはサードパーティシステムからデータを取得します。認証が必要です。この第三者システムに対してユーザーを認証するには、oauthが使用されます。私はO365 rest apiエンドポイントを呼び出さない。 – thadam

+0

私は今理解しています。私はモバイルでのサポートがアドインのために非常に限られていることを知っています。おそらくMDNフォーラムでは、モバイルでのサポートについてもっと詳しく知ることができます:https://social.msdn.microsoft.com/Forums/office/en-US/home?forum = appsforoffice – OriEng

答えて

1

この問題を解決する正しい方法はWebSocketsです。単一のクライアントに資格情報を転記していることを確認することができます。クライアント - ユーザーが戻ってあなたのウェブサイトへのOAuthの経験からリダイレクトされると

ウェブサイト、

var socket = io('http://localhost'); 
var email = Office.context.mailbox.userProfile.email; 
socket.on('oauth_providerName_'+email, function(data){ 
    // Callback when you receive the credential data. 
}); 

// Pop the user to the OAuth frame 

: - あなたのWebアドインでは、ソケット

アドインを起動するクライアントはjavascriptのようになります。 Javascript

var socket = io('http://localhost'); 
var email = Office.context.mailbox.userProfile.email; 
socket.emit('oauth_cred_providerName_'+email, {credentials}); 

サーバー - 選択した言語に応じて、資格データをソケット経由でアドインクライアントに渡します。

だから、理想的にあなたがここに3つの要素があります。

  1. アドインJavascriptの特定のデータを持つ資格ソケットにリッスン(クッキーのGUIDまたは電子メールアドレスなどのユニークな値にすることができ)
  2. OAuthの完了後にリダイレクトされるWebページ。ソケットを介してサーバーに資格情報(Access Token/Refresh Token)が渡されます。 (アドインでデプロイされたページとしてこれをホストすることもできますが、ここで重要なのは別のJSファイルを持つことです)
  3. サーバーソケットは、資格情報を取得してアドインクライアントに渡します。
+0

はい、動作するようです。私はまた働くことができる可能性を見つけました。 Office.jsには、Office.context.ui。*経由でポップアップを表示できるAPIが用意されており、メッセージを送信してアプリケーションに返信します。 – thadam

+0

これがあなたの問題を解決すると思うなら、あなたはそれを答えにしますか? –

関連する問題