2017-10-13 22 views
0

Uber APIでrequestRide()メソッドを呼び出そうとするとエラーが発生します。応答本文はヌルで、応答メッセージは「Unauthorized」で、エラーコードは401です。 onResponse()コールバックメソッドは実行されていますが、onFailure()コールバックメソッドは実行されていません。ここでuber requestRide()メソッド応答エラー401:無許可

はrequestRide()を呼び出し、コールバックインターフェイスを実装するための私のコードは、私はAPI自体(でから取得していた、私はすでにのparam PRODUCTIDをチェックしているとFareIdが有効である...

private void requestForNewRide(RidesService service, int position){ 
     RideRequestParameters rideRequestParameters = new RideRequestParameters.Builder().setPickupCoordinates(PICKUP_LATITUDE, PICKUP_LONGITUDE) 
       .setProductId(productIds.get(position)) 
       .setFareId(fareIds.get(position)) 
       .setDropoffCoordinates(DROPOFF_LATITUDE, DROPOFF_LONGITUDE) 
       .build(); 
     service.requestRide(rideRequestParameters).enqueue(new Callback<Ride>() { 
      @Override 
      public void onResponse(Call<Ride> call, Response<Ride> response) { 

       if (response.isSuccessful()) { 
        Toast.makeText(CustomActivity.this, "Request ride success", Toast.LENGTH_SHORT).show(); 

        try { 
         //ride details 
         String rideId = response.body().getRideId(); 
         String rideStatus = response.body().getStatus(); 
         Integer rideEta = response.body().getEta();       //estimated time of arrival in min 
         Float rideSurgeMultiplier = response.body().getSurgeMultiplier();  //rise in price 
         Driver rideDriver = response.body().getDriver(); 
         Location rideLocation = response.body().getLocation(); 
         Vehicle rideVehicle = response.body().getVehicle(); 

         //ride driver details 
         String driverName = rideDriver.getName(); 
         String driverPhoneNumber = rideDriver.getPhoneNumber(); 
         String driverPictureUri = rideDriver.getPictureUrl(); 
         Float driverRating = rideDriver.getRating(); 

         //ride Location details 
         Float rideLocationLatitude = rideLocation.getLatitude(); 
         Float rideLocationLongitude = rideLocation.getLongitude(); 
         Integer rideLocationBearing = rideLocation.getBearing(); 

         //ride Vehicle details 
         String rideVehicleLicencePlate = rideVehicle.getLicensePlate(); 
         String rideVehicleMake = rideVehicle.getMake(); 
         String rideVehicleModel = rideVehicle.getModel(); 
         String rideVehiclePictureUrl = rideVehicle.getPictureUrl(); 

         //Log 
         Log.d("uberridedetails", "rideId: " + rideId); 
         Log.d("uberridedetails", "rideStatus: " + rideStatus); 
         Log.d("uberridedetails", "rideEta: " + rideEta); 
         Log.d("uberridedetails", "rideSurgeMultiplier: " + rideSurgeMultiplier); 
         Log.d("uberridedetails", "driverName: " + driverName); 
         Log.d("uberridedetails", "driverPhoneNumber: " + driverPhoneNumber); 
         Log.d("uberridedetails", "driverPictureUri: " + driverPictureUri); 
         Log.d("uberridedetails", "driverRating: " + driverRating); 
         Log.d("uberridedetails", "rideLocationLatitude: " + rideLocationLatitude); 
         Log.d("uberridedetails", "rideLocationLongitude: " + rideLocationLongitude); 
         Log.d("uberridedetails", "rideLocationBearing: " + rideLocationBearing); 
         Log.d("uberridedetails", "rideVehicleLicencePlate: " + rideVehicleLicencePlate); 
         Log.d("uberridedetails", "rideVehicleMake: " + rideVehicleMake); 
         Log.d("uberridedetails", "rideVehicleModel: " + rideVehicleModel); 
         Log.d("uberridedetails", "rideVehiclePictureUrl: " + rideVehiclePictureUrl); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       }else { 
        Toast.makeText(CustomActivity.this, "Error: "+response.message(), Toast.LENGTH_SHORT).show(); 
       } 
      } 

      @Override 
      public void onFailure(Call<Ride> call, Throwable t) { 
       Toast.makeText(CustomActivity.this, "Failed to request ride", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

です。そして、私は商品コードを持っているRideServiceオブジェクト上)(getProductsを呼び出すことによってestimateRideを()私はfareId持っていることから、価格オブジェクトを取得呼び出す。

は、このセットアップのためのコードです...

SessionConfiguration config = new SessionConfiguration.Builder() 
       .setClientId(getResources().getString(R.string.client_id)) 
       .setRedirectUri(getResources().getString(R.string.redirect_url)) 
       .setEnvironment(SessionConfiguration.Environment.SANDBOX) 
       .setScopes(Arrays.asList(Scope.PROFILE, Scope.RIDE_WIDGETS, Scope.REQUEST, Scope.REQUEST_RECEIPT)) 
       .build(); 
     UberSdk.initialize(config); 

そして...

LoginCallback loginCallback = new LoginCallback() { 
      @Override 
      public void onLoginCancel() { 
       // User canceled login 
       Toast.makeText(CustomActivity.this, "User canceled login", Toast.LENGTH_SHORT).show(); 
      } 
      @Override 
      public void onLoginError(@NonNull AuthenticationError error) { 
       // Error occurred during login 
       Toast.makeText(CustomActivity.this, "Error occurred during login", Toast.LENGTH_SHORT).show(); 
      } 
      @Override 
      public void onLoginSuccess(@NonNull AccessToken accessToken) { 
       // Successful login! The AccessToken will have already been saved. 
       Toast.makeText(CustomActivity.this, "Successful login! The AccessToken will have already been saved.", Toast.LENGTH_SHORT).show(); 
       createSession(); 
      } 
      @Override 
      public void onAuthorizationCodeReceived(@NonNull String authorizationCode) { 
       Toast.makeText(CustomActivity.this, "Authorization code received", Toast.LENGTH_SHORT).show(); 
       createSession(); 
      } 
     }; 
     AccessTokenManager accessTokenManager = new AccessTokenManager(getApplicationContext()); 
     LoginManager loginManager = new LoginManager(accessTokenManager, loginCallback); 
     loginManager.setRedirectForAuthorizationCode(true); 
     loginManager.login(this); 
     mAccessTokenManager = accessTokenManager; 
     mLoginManager = loginManager; 

注1:私は私の開発者アカウントでログインしてい:これらは私が...

Scope.PROFILE, Scope.RIDE_WIDGETS, Scope.REQUEST, Scope.REQUEST_RECEIPT 

注2を使用していたスコープです。

他の詳細について言及する必要がある場合はお知らせください。

+0

まだ認証に問題がありますか?ログから、有効なアクセストークンを取得できました。https://www.uber.com/en-IN#access_token=KA.eyJ2ZXJzaW9uIjoyLCJpZCI6Ik1XOX********。また、 "@timestamp": "2017-10-16T13:41:19.318Z"で成功した乗車要求があります。あなたは解決策であなたの質問を更新してください - そして何が問題でしたか? –

答えて

関連する問題