2016-11-10 7 views
0

私はAccessTokenを取得しようとしていますUberRidesから。そのために私はUberの開発者のポータルチュートリアルに従いました。しかし、ログイン中にLoginManagerクラスからaccessTokenを取得できません。ここに私のコードがあります。
iosでUber AccessTokenを取得中にエラーが発生しました

@IBAction func getRide(sender: UIButton) { 

    let loginManager = LoginManager() 
    loginManager.login(requestedScopes:[.RideWidgets], presentingViewController: self, completion: { accessToken, error in 
     // Completion block. If accessToken is non-nil, you’re good to go 
     print("::AccessToken::") 
     print(accessToken) 
     print("::Error::") 
     print(error) 
    }) 

} 

私のカスタムボタンをクリックしている間、次のログになります。

::AccessToken::
nil
::Error::
Optional(Error Domain=com.uber.rides-ios-sdk.ridesAuthenticationError Code=20 "A network error occured." UserInfo={NSLocalizedDescription=A network error occured.})

インターネット接続が正常に動作していることを確認しました。しかし、まだこのエラーが発生しています。
これを解決するのを手伝ってください。

+0

あなたの接続とは関係ありません。それは認証エラーです:** ridesAuthenticationError **。正しい詳細を送信してもよろしいですか? – Eeshwar

+0

はい、Uberさんが提示した 'LoginManagerViewController'の正しい情報を渡しています –

+0

ログインページがまったく表示されていませんか、そのエラーで直ちに失敗しますか?また、どのバージョンのSDKを使用していますか? –

答えて

0

enter image description here

はまた

let pickupLocation = userLocation 
    let dropOffLocation = toLocation 
    let params = RideParametersBuilder().setPickupLocation(pickupLocation).setDropoffLocation(dropOffLocation).build() 

    let loginManager = LoginManager() 
    if TokenManager.fetchToken() != nil { 
     self.rideRequestViewController = RideRequestViewController(rideParameters: params, loginManager: loginManager) 
     self.rideRequestViewController.delegate = self 
     self.rideRequestViewController.view.frame = CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 50) 
     self.view.addSubview(self.rideRequestViewController.view) 
     self.addChildViewController(self.rideRequestViewController) 
     self.rideRequestViewController.didMoveToParentViewController(self) 
    } 
    else { 

     loginManager.login(requestedScopes: [.RideWidgets], presentingViewController: self) { (accessToken, error) in 
      if error == nil { 
       print(accessToken) 
       dispatch_async(dispatch_get_main_queue(), { 
        TokenManager.saveToken(accessToken!) 
        self.rideRequestViewController = RideRequestViewController(rideParameters: params, loginManager:loginManager) 
        self.rideRequestViewController.delegate = self 
        self.rideRequestViewController.view.frame = CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 50) 
        self.view.addSubview(self.rideRequestViewController.view) 
        self.addChildViewController(self.rideRequestViewController) 
        self.rideRequestViewController.didMoveToParentViewController(self) 
       }) 
      } 
      else { 
       dispatch_async(dispatch_get_main_queue(), { 
        let alert = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle:.Alert) 

        let action = UIAlertAction(title: "ok", style: .Cancel, handler: nil) 

        alert.addAction(action) 

        self.presentViewController(alert, animated: true, completion: nil) 
       }) 
      } 
     } 

    } 

セットRideRequestViewController委任のparams開始と終了位置を設定しユーバーのデベロッパーダッシュボード

にコールバックURIを設定し、アクセストークンがでコールバックURIをチェックし、その後行方不明かどうかを確認Uber DeshBoard

extension UberRideViewController : RideRequestViewControllerDelegate { 
func rideRequestViewController(rideRequestViewController: RideRequestViewController, didReceiveError error: NSError) { 
     let errorType = RideRequestViewErrorType(rawValue: error.code) ?? .Unknown 

     switch errorType { 
     case .AccessTokenMissing: 
      print("access missing") 
     // No AccessToken saved 
     case .AccessTokenExpired: 
      print("expired") 
     // AccessToken expired/invalid 
     case .NetworkError: 
      print("network Error") 
     // A network connectivity error 
     case .Unknown: 
      print("Error") 
     default: 
      print("default") 
     } 
    } 
} 
関連する問題