2017-03-07 4 views
2

現在、Outlookのメールサービスを使用して連絡先/予定とメールを取得しようとしています。しかし、私は問題に遭遇しました。Outlook OAuth2はアプリケーションにリダイレクトできません

私は複数のサービスを統合していますので、私はすべての私のOAuth呼び出しを行うためにライブラリとしてOAuth2Swiftを使用しています。

そのREADME enter image description here

で説明したように、私はその後、私は私がhttps://apps.dev.microsoft.com
に見通しのためのアプリケーションを作成し、この

struct Consumer { 
    let consumerKey: String 
    let consumerSecret: String 
    let authorizeURL: String 
    let accessTokenURL: String 
    let responseType: String? 
    let requestTokenURL: String? 
} 

let Outlook = Consumer(
    consumerKey: "", 
    consumerSecret: "", 
    authorizeURL: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", 
    accessTokenURL: "https://login.microsoftonline.com/common/oauth2/v2.0/token", 
    responseType: "code", 
    requestTokenURL: nil) 

のように見えるConstantsファイルを作成しURL schemeを作成しましたが、私の鍵を生成し、私のアプリケーションの中にそれらを埋めました。

私は私のアプリにmobile applicationプラットフォームを追加しました。これは私が私が最初に私のメール/パスワードを入力する画面を取得するコードを実行すると、この

@IBAction func btn_Outlook(_ sender: Any) { 
     let oauthOU = OAuth2Swift(
      consumerKey: Outlook.consumerKey, 
      consumerSecret: Outlook.consumerSecret, 
      authorizeUrl: Outlook.authorizeURL, 
      accessTokenUrl: Outlook.accessTokenURL, 
      responseType: Outlook.responseType!) 

     oauthOU.authorizeURLHandler = SafariURLHandler(viewController: self, oauthSwift: oauthOU) 
     oauthOU.authorize(
      withCallbackURL: "urn:ietf:wg:oauth:2.0:oob", 
      scope: "https://outlook.office.com/Mail.ReadWrite https://outlook.office.com/Mail.Send https://outlook.office.com/Calendars.ReadWrite https://outlook.office.com/Contacts.ReadWrite https://outlook.office.com/Tasks.ReadWrite", 
      state: state, 
      success: { credential, response, parameters in 
       print("logged in with \(credential), with response \(response) and parameters \(parameters)")}, 
      failure: { error in 
       print("error occured \(error.localizedDescription)") 
      } 
      ) 
     } 

のようなルックスを許可するので、私のコード

URI urn:ietf:wg:oauth:2.0:oobリダイレクトを使用するように私に語りました。メールを入力すると、パスワードを入力できる別のページ/ポータルにリダイレクトされます。パスワードを入力すると、権限画面が表示されます。

としてすぐに私はそれが私に言って、エラー与える yesを打つよう

enter image description here

「アドレスが無効であるため、Safariがページを開くことができませんが。」私はこれがredirect URIと関係があると確信していますが、これを実際に修正するために何をすべきかはわかりません。

私は誰かがこれで私を助けすることができます願っています!

答えて

0

私は(最初の画像を参照してください。何の識別子セットはありません)あなたのURLスキームの設定で識別子urn:ietf:wg:oauth:2.0:oobを指定するために忘れてしまったと思う、私はあなたがOAuthSwiftライブラリからAppDelegateでredirect URIを処理するために忘れてしまったと思います

+0

は、私はそれを追加しましたが、見通しでサインインしようとしたときには、同じメッセージが – NoSixties

0

!以下のように、AppDelegateでコールバックを処理する必要があります。

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    if (url.host == "oauth-callback") { 
    OAuthSwift.handle(url: url) 
    } 
    return true 
} 
+0

はそれを追加するのを忘れ現れるが、私は私のデリゲートでその方法を持っている任意の違いはありませんでしたし、それも呼び出されません。 。それは私がtwitterでそれをするときに呼び出される – NoSixties

+0

こんにちは、これを解決することができましたか?私はXamarin-Mac-appからOneDriveで認証しようとしているのとまったく同じ問題があります。 – Tom

+0

これは既にここで言及されています - https://github.com/OAuthSwift/OAuthSwift – KiranJasvanee

関連する問題