【问题标题】:Android: How to programmatically check if a number is online on WhatsApp? [closed]Android:如何以编程方式检查 WhatsApp 上的号码是否在线? [关闭]
【发布时间】:2019-05-10 18:02:41
【问题描述】:

如何以编程方式检查联系人号码在 WhatsApp 上是否在线, 上是否在线?

我在 Google 上搜索过,我刚刚找到了另一个应用程序,它会在输入的联系号码上线时发出通知,但我想以编程方式知道这一点,以便我可以在我的应用程序中实现它。

注意:- 如果存在这种应用程序,那么我的问题一定有解决方案。

我在 SO 上找到了另一个问题,但答案与问题中提出的问题完全无关,但该答案仍然有 4 个赞成票并被 OP 接受,我不知道如何?

那么,那里有 可用吗?或任何 Intent 操作?

【问题讨论】:

标签: android api android api whatsapp


【解决方案1】:

了解帐户在线状态仍然是一个私有 API。所以你不能以“合法”的方式做到这一点。

当然,WhatsApp 和您提到的其他应用程序可以做到这一点。所以他们知道该怎么做。

如果您想知道他们如何按照您的要求进行操作,您必须对其进行逆向工程。

您可以做的是知道一个号码是否是有效的 WhatsApp 用户。

根据文档,你必须有你的Facebook WhatsApp Buisiness API:

https://developers.facebook.com/docs/whatsapp/api/reference/

WhatsApp 是一种快速、安全且可靠的方式,可供企业联系 他们的客户遍布世界各地。本指南描述了如何 企业可以使用 WhatsApp Business API 与他们的 客户。

此版本的 WhatsApp Business API 使用 REST API 架构 使用 JSON 数据格式。 API 遵循标准 HTTP 请求-响应交换。

一旦您拥有一个有效的企业帐户,您就可以查询Contacts (Contacts) 节点

将联系人节点用于以下目的:

验证数据库中的电话号码是否属于有效的 WhatsApp 帐户。您必须先确保状态有效,然后才能 向用户发送消息。获取电话号码的 WhatsApp ID。 WhatsApp 需要 ID 来发送消息、使用通知和使用 组。

来自 doc 执行这样的 POST 请求:

POST /v1/contacts

{
   "blocking": "wait",
   "contacts": [
      "16315551003",
      "1-631-555-1002",
      "+54 9 11 5612-1008",
      "+1 (516) 283-7151"
   ] 
}

你可以获得这样的信息:

响应在您发送检查联系人的请求后,您将收到 带有请求号码当前状态的响应。联系人 新的通常具有处理状态,因为 应用程序异步确定数字是否属于有效 WhatsApp 帐户。

如果在请求中使用了“blocking”:“wait”选项,响应 现在是同步的,因此响应仅在状态一次生成 所有的数字已经确定。这意味着 如果有新的联系人,请求将需要更长的时间才能返回, 但您不会看到返回的“处理”值。示例代码 下面演示了这种行为。

{
   "contacts": [
      {
         "input": "1-631-555-1002",
         "status": "invalid"
      },
      {
         "input": "6315551003",
         "status": "valid"
         "wa_id": "16315551003"
      },
      {
         "input": "+54 9 11 5612-1008",
         "status": "invalid"
      },
      {
         "input": "+1 (516) 283-7151",
         "status": "valid"
         "wa_id": "15162837151"
      }
   ]
}

【讨论】:

  • 但是我怎样才能知道任何号码是否在线?
  • 是否也可以获取某个号码的在线状态信息,无论任何号码是否在线?
  • @Zlytherin 你是对的,对不起,这仍然是一个非公共 API。所以,如果你愿意,我会删除我的答案。无论如何,我猜这样做的应用程序已经对官方应用程序进行了逆向工程,并研究了它是如何做到的。您还可以反编译或您知道的 MITMed 应用程序,以了解他们是如何做到的。
  • @shadowsheep,我们真的可以反编译任何应用程序并获得它的源代码吗?我不知道这是可能的,请分享我们如何做到这一点。现在,如果您认为此答案与此问题无关,则完全取决于您,那么您应该删除它,否则谁在乎?
猜你喜欢
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 2016-02-16
  • 2022-08-03
  • 1970-01-01
  • 2022-06-21
相关资源
最近更新 更多