Android 如何获取用户id(或唯一令牌)以确保应用程序在应用商店中购买

Android 如何获取用户id(或唯一令牌)以确保应用程序在应用商店中购买,android,ios,cordova,Android,Ios,Cordova,我的系统由一个移动应用程序(Cordova应用程序)和一个Web服务组成,提供所有相关数据。当用户在appstore(或playstore,如果是android)中购买应用程序时,应在Web服务上创建用户帐户,理想情况下无需任何用户交互(无需注册)。用户帐户可以与gmail帐户、苹果id等链接。。。这是必需的,只允许付费用户使用Web服务 我的问题: 我没有找到获取用户id的方法。(安卓似乎有办法,但iOS没有) 我只希望每个用户只注册一次。这样我就不用在应用程序第一次启动时使用注册页面之类的

我的系统由一个移动应用程序(Cordova应用程序)和一个Web服务组成,提供所有相关数据。当用户在appstore(或playstore,如果是android)中购买应用程序时,应在Web服务上创建用户帐户,理想情况下无需任何用户交互(无需注册)。用户帐户可以与gmail帐户、苹果id等链接。。。这是必需的,只允许付费用户使用Web服务

我的问题:
  • 我没有找到获取用户id的方法。(安卓似乎有办法,但iOS没有)

  • 我只希望每个用户只注册一次。这样我就不用在应用程序第一次启动时使用注册页面之类的东西了——这很容易被绕过并导致多次注册

  • 用户帐户应该链接到用户而不是设备(因此没有设备UUID,因为这在设备之间是不可移植的)

  • 我的想法是:
  • (最喜欢的,似乎不可能)我在应用程序中有一个方法“getUserID()”,它在手机上返回正确的用户。此外,我还可以访问API以检查谁购买了我的应用程序。我可以很容易地进行交叉检查,以确保用户拥有使用Web服务的权限

  • (不必要的复杂,似乎是错误的)免费使用应用程序,使用单一的应用程序内购买来购买Web服务的访问权限。当我搜索时,我发现应用内购买似乎给了你更多信息,因此可能有机会将应用与用户链接

  • (甚至比2更糟)。使用自己的支付系统/注册,免费使用该应用程序

  • 我的问题:
    Android/iOS应用商店生态系统提供了什么,以便我可以确保购买应用的用户在我的Web服务上创建一个用户帐户,并且该用户帐户链接到用户而不是设备?

    您应该为每个付费用户生成一个秘密api密钥。
    然后,用户应该使用该密钥对API进行身份验证,并获得一个令牌(如果您想要更强大的保护,可以让令牌在一段时间后过期)。用户应将此令牌附加到其所有api调用

    这将如何保护API?API应该受到保护,这样只有授权(已付费)的用户才能调用它-这就是为什么应用程序需要发送一个包含请求的用户帐户,并且Web服务知道有效的用户帐户。而且,每次购买只能创建一个用户帐户。是的,这将解决我的问题-但是如何为每个用户生成API密钥?我不能在web服务上这样做,因为在那里我不知道用户是否付费(除非我有android/ios的一些工具支持),我也不能在应用程序中这样做,因为这样每个应用程序都可以制作多个键,或者无法移植到下一次安装。一旦用户付费,你需要通过web界面(外部或内部)这样做,你可以生成一个随机的UUID或其他东西,然后通过电子邮件发送给他,或者只是为付费客户创建一个web界面,向他们显示密钥。但是我如何才能生成一个随机密钥/令牌,仅用于付费客户,并防止非付费客户获得令牌?