对于RideRequestWidget,我有以下代码
RideParameters rideParams = new RideParameters.Builder()
.setProductId("83941b0d-4be1-4979-a9c0-f0af5ee2b89b")
.setPickupLocation(19.1136, 72.8679, "Uber HQ", "1455 Market Street, San Francisco")
.setDropoffLocation(19.1145, 72.8675, "Embarcadero", "One Embarcadero Center, San Francisco")
.build();
SessionConfiguration config = new SessionConfiguration.Builder()
.setClientId(AppController.UBER_CLIENT_ID)
.setServerToken(AppController.UBER_SERVER_TOKEN)
.build();
ServerTokenSession session = new ServerTokenSession(config);
holder.uberButton.setRideParameters(rideParams);
holder.uberButton.setRequestBehavior(new RideRequestActivityBehavior((Activity) mContext, 1234));
holder.uberButton.setSession(session);
holder.uberButton.setCallback(callback);
holder.uberButton.loadRideInformation();
正好来自Uber Docs。
我有一些问题。
我有一部未安装Uber应用的手机。单击Ride按钮时,它很好地将我带到webview,我可以无缝地登录并请求驾驶室(当然!沙盒)。直到现在一切都很好。但我有另一部手机,我安装了应用程序(通过电子邮件传递apk),我已经安装了Uber应用程序(并登录)。当我点击Ride按钮然后显示。
这是什么原因?
隐式授权和oauth2之间有什么区别。 oauth2更受欢迎,还是提供更多功能?还是一样的? 如果oauth2更好,那么请!提供了一些关于'重定向网址'的信息。任何样品都会对我有益!
我的用例很简单:我纯粹希望帮助用户代表他预订旅程!
编辑:
我还有以下问题
当我在沙箱环境中使用RideRequestWidget时,它不尊重它。它只是深层链接到我的超级应用程序(如果已安装),我可以实际预订出租车。
我登录了手机上安装的Uber帐户(在uber应用程序中),并为我的开发者帐户注册了相同的凭据。因此,根据文档,当我点击riderequestwidget时,它应该深度链接并向我显示视图,以便我可以预订出租车。但它显示了上面提到的错误(在上面的屏幕中)
如果我退出然后点击小部件,它会深入链接到已安装的Uber应用程序,我几乎可以输入“任何”ID(未注册到我的开发者帐户)并且它“登录” ”。
答案 0 :(得分:0)
如果安装了Uber应用程序,则Ride Request Widget将尝试使用Single Sign On来授权用户。身份验证错误可能是任意数量的错误,您可以通过使用onActivityResult并检查“authentication_error”的意图附加内容来检查哪些错误。最有可能的错误是您没有在developer.uber.com的授权页面上注册您的应用程序的签名。在错误中检查日志中的应用程序签名,或者通过Login section of the Rides Android SDK README中的说明自行生成。
隐式授权是OAuth2的流类型。后端可能会使用重定向URL来获取具有不同流的访问令牌。出于隐式授权的目的,只要您在授权页面上注册的重定向URL与SDK中的重定向URL相匹配,它就可以工作(您甚至可以使用)。