3

私は、OAuth1 と OAuth2 の両方を使用するいくつかの異なるソーシャル ネットワーキング サイトに接続するために OAuthSwift ライブラリを実装するプロジェクトに取り組んでいます。

ソーシャル ネットワーキング サイトに移動する Web ビューを読み込むようにアプリケーションをセットアップしましたが、アプリケーションをリダイレクトして戻すことができません。資格情報を読み込むと、アプリケーションを承認する許可を与えるように求められますが、承認すると、ソーシャル ネットワーキング サイトのホームページが読み込まれます。

アプリケーションに戻ることはできますが、アカウントへのアクセス許可を受け取ったことを登録しません。

OAuth を使用するのはこれが初めてで、コールバック URL がわかりにくいと感じています。

Web ビューをアプリケーションにリダイレクトする方法と、アプリケーションの URL を設定する方法を説明していただければ幸いです。

クラスViewController:UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func postToTumblr(sender: AnyObject) {
    let oauthSwift = OAuth1Swift(
        consumerKey: "consumerKey",
        consumerSecret: "secretKey",
        requestTokenUrl: "https://www.tumblr.com/oauth/request_token",
        authorizeUrl: "https://www.tumblr.com/oauth/authorize",
        accessTokenUrl: "https://www.tumblr.com/oauth/access_token"
    )

    oauthSwift.authorizeWithCallbackURL(NSURL(string: "com.myCompany.sampleApp")!,
        success: { credential, response in
            // post to Tumblr
            print("OAuth successfully authorized")
        }, failure: {(error:NSError!) -> Void in
            self.presentAlert("Error", message: error!.localizedDescription)
    })
}


func presentAlert(title: String, message: String) {
    let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
    alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
    self.presentViewController(alert, animated: true, completion: nil)
}

}

4

1 に答える 1

7

私の会社の何人かと話し、ライブラリを見てもらった後、次のように問題を解決することができました。

OAuthSwift ライブラリは、URL スキームの「com.myCompany」部分を削除します。コールバック URL を探すときは、アプリケーションの名前の後に「://oauth-callback」が続くものを探します。

したがって、代わりに:

oauthSwift.authorizeWithCallbackURL(NSURL(string: "com.myCompany.sampleApp")!

それは探していました:

oauthSwift.authorizeWithCallbackURL(NSURL(string: "tumblrsampleapp://oauth-callback")!

また、URL スキームを info.plist に次のように登録する必要がありました。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>tumblrsampleapp</string>
        </array>
    </dict>
</array>

最後に、次のメソッドを App Delegate に追加する必要がありました。

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    OAuth1Swift.handleOpenURL(url)
    return true
}

これで問題は解決し、アプリは適切に認証され、アプリケーションに戻るようになりました。

これが、OAuthSwift ライブラリを使用して OAuth1 を実装しようとしている他の人に役立つことを願っています。

于 2015-11-19T19:44:49.880 に答える