【问题标题】:Get Users end point location using Uber API使用 Uber API 获取用户端点位置
【发布时间】:2016-05-14 06:11:17
【问题描述】:

我一直在研究 UBER API,我想知道是否有办法在我的 Android/iOS 应用中运行服务,我的应用可以在其中获取用户下车位置。

我现在考虑的方式是以下场景: - 用户在前往目的地的 UBER 车上 - 我的应用会收到有关下车地点(纬度、经度)位置的通知 - 我的应用通过通知建议他们可以在下车地点附近做的事情。

这样的用例可能吗?

我对@9​​87654321@感兴趣

特别是在此信息中: “目的地”:{ “纬度”:37.7766874, “经度”:-122.394857, “埃塔”:19 }

谢谢。

【问题讨论】:

    标签: android uber-api


    【解决方案1】:

    这样的用例是可能的,并在以下链接中进行了更详细的解释:

    要打造这次旅行体验,您必须向用户请求all_trips OAuth scope

    所有行程

    获取用户当前行程的详细信息,无论 请求方式(通过优步应用程序或第三方 应用程序)。

    特权

    这是一个特权范围,因为您需要先向 Uber 请求访问权限,该范围才能在您在 Uber Developer Dashboard 中定义的应用程序中使用

    然后,在您使用POST /v1/requests 代表用户提出优步乘车请求后,您可以拨打GET /v1/requests/currentGET /v1/requests/{request_id} 以获取行程详情:

    {
       "request_id":"17cb78a7-b672-4d34-a288-a6c6e44d5315",
       "status":"accepted",
       "location":{
          "latitude":37.7886532015,
          "longitude":-122.3961987534,
          "bearing":135
       },
       "pickup":{
          "latitude":37.7872486012,
          "longitude":-122.4026315287,
          "eta":5
       },
       "destination":{
          "latitude":37.7766874,
          "longitude":-122.394857,
          "eta":19
       },
       "driver": {
          "phone_number": "(555)555-5555",
          "rating": 5,
          "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/img.jpeg",
          "name": "Bob"
       },
       "vehicle":{
          "make": "Bugatti",
          "model": "Veyron",
          "license_plate": "I<3Uber",
          "picture_url": "https:\/\/d1w2poirtb3as9.cloudfront.net\/car.jpeg"
       },
       "surge_multiplier":1.0,
       "eta": 5
    }
    
    • 如果您的应用不发出乘车请求,您必须轮询 GET /v1/requests/current 端点。请参阅 thisthis 了解最佳做法。

    • 如果您的应用发出乘车请求,上述 /v1/requests 端点可以与 Webhooks 事件驱动机制相结合,以便在您的服务器上通知您行程的 status has been updated 或收据是准备好,而不必每 3-5 秒轮询一次以获取最新的详细信息。

    当您通过 webhook 收到 Uber 的通知时,您会调用 GET /v1/requests/currentGET /v1/requests/{request_id} 端点。

    然后,您需要根据您收到的数据通知您的 Android 服务(通过服务器到客户端的通信机制,例如 websocket、推送通知等),Uber 提供了新信息,并基于您向用户显示的信息给定您要使用的“旅行背景”数据的相关信息,例如:
    - 当前位置(纬度/经度)
    - 取货地点(纬度/经度)
    - 预计接送时间(汽车到达时)
    - 目的地位置(纬度/经度)
    - 到达目的地的 ETA(当用户在车里时)

    webhook 接收以下事件:

    • REQUESTS.STATUS_CHANGED

      对于您的应用程序在 我们将代表优步乘客向您的 WEBHOOK URL 发出请求 每当其状态发生变化时。这可以帮助您通知用户或 更改应用程序的状态以反映状态更改,而无需 不断轮询 /v1/requests 端点。

    • REQUESTS.RECEIPT_READY

      对于您的应用程序代表优步乘客提出的所有请求,我们 每当收到请求回执时,都会向您的 WEBHOOK URL 发出请求 可用的。这将允许您向用户展示他们的详细信息 车费以及收据一到他们就被收取了多少费用 可用的。如果骑手在宽限期后取消,并且他们是 已收费,但仍会提供显示该收费的收据。

      要访问请求回执资源,用户必须拥有 授权您的应用程序访问 request_receipt 范围。

    【讨论】:

    • 非常感谢您的回复我了解 oAuth 部分和 webhook(这太棒了,因为我的应用程序不必继续检查状态,然后我必须处理电池耗尽的问题问题 :))。我不清楚的一件事是 - 我必须做一个 POST /v1/requests 吗?因为我不希望我的应用程序启动骑行,而是希望我的应用程序知道正在进行骑行,然后通过 webhook,您可以获得如您所描述的更改状态。
    • 如果您不想提出乘车请求,您可以使用具有all_trips scope 的访问令牌调用GET /v1/requests/current,并且将返回当前请求/行程的行程详细信息,无论哪个应用程序启动它。 all_trips 是一个特权范围,您需要在应用程序的开发者仪表板中向 Uber 请求访问它。 “访问有关所有未来 Uber 行程的行程详细信息。包括您未来所有行程的接送、目的地和实时位置”
    • 但是,如果您的应用程序未发出乘车请求,您将不会在网络挂钩 URL 中收到状态更新通知。正如web hooks docs 所说:“对于您的应用程序代表优步乘客提出的所有请求,只要其状态发生变化,我们就会向您的 WEBHOOK URL 发出请求”。您必须进行投票,请参阅 thisthis 了解最佳做法
    • 对不起这里的最后一条评论。我希望优步应用程序能够广播一个意图,并且具有正确凭据的应用程序能够使用它并采取相应的行动:(。感谢您的回复。
    • 我同意,更好的设计绝对是可能的。同时,我认为代表用户在您自己的服务器上进行轮询并在状态更改时向您的设备发送下游推送通知,在电池寿命和整体性能方面是一个不错的选择。对于适用于 Android 和 iOS 的良好推送通知服务器端库(如果您使用适用于 iOS 的 Google Cloud Messaging),我推荐python-gcm
    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多