如何将 android 应用程序令牌从应用程序传递到 php 页面? Laravel

How to pass android app token from the app to a php page? Laravel

我构建了一个 android 应用程序,它仅显示 Web 登录和注册页面。

我将应用程序连接到 firebase,我可以为每台设备成功生成令牌。

然后,我创建了一个 test.php 页面,它向单个设备而不是一组设备发送推送通知,并成功推送了通知。

<?php
define('API_ACCESS_KEY','xxxx');
 $fcmUrl = 'https://fcm.googleapis.com/fcm/send';
 $token='xxxxx';

    $notification = [
            'title' =>'xxxx',
            'body' => 'xxxx',
            'icon' =>'myIcon', 
            'sound' => 'mySound'
        ];
        $extraNotificationData = ["message" => $notification,"moredata" =>'dd'];

        $fcmNotification = [
            //'registration_ids' => $tokenList, //multple token array
            'to'        => $token, //single token
            'notification' => $notification,
            'data' => $extraNotificationData
        ];

        $headers = [
            'Authorization: key=' . API_ACCESS_KEY,
            'Content-Type: application/json'
        ];


        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$fcmUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fcmNotification));
        $result = curl_exec($ch);
        curl_close($ch);


        echo $result;

问题是我无法为每个用户将令牌插入我的网站数据库,因为从逻辑上讲,您无法知道该令牌属于哪个用户,

因此,在用户登录或注册后 --> PHP 代码获取应用令牌 --> 插入当前用户数据库。

如何让PHP代码获取app token?

当用户在您的 android 应用程序中登录或注册时,您可以从 Firebase Auth User Database and can retrieve their current ID Token 作为签名的 JWT 访问他们的用户信息。您可以将此 ID 令牌发送回您的 PHP 服务器,并使用它将 Firebase 用户映射到您网站数据库中的用户。

我认为涉及两个一般步骤:

  1. 将 Firebase 用户映射到 PHP 后端中的用户
  2. Storing/Connecting 您后端的设备令牌

0。从您的应用程序向您的 PHP 后端发出经过身份验证的请求

  1. 在用户的设备上签名 in/Register
  2. Retrieve the user's current ID token
  3. 使用 ID 令牌验证从您的应用程序到 PHP 后端的请求
  4. Verify the ID token in your PHP backend(不要跳过这个,重要的是拒绝 JWT 不是 由您的应用程序发送)

您现在可以通过访问 JWT 的 sub 声明来访问用户的 Firebase UID。

1.将 Firebase 用户映射到 PHP 后端

中的用户

你应该只需要这样做一次。

  1. 验证后,使用 ID 令牌 fetch the user's account info
  2. 使用帐户信息中的电子邮件并将其与您的 PHP 应用程序网站数据库中的用户匹配。
  3. 将 Firebase UID 作为 属性 存储在 PHP 应用程序的本地用户
  4. 下次收到 ID 令牌时,您无需再获取帐户信息,只需搜索具有 Firebase UID 的本地用户即可

2。 Storing/Assigning 您后端的设备令牌

  1. 在用户的设备上,retrieve the device token/registration token
  2. 对于经过身份验证的请求,将注册令牌发送回您的 PHP 后端。
  3. 在后端,您可以使用 ID 令牌中的 Firebase UID 查找本地用户并将设备令牌分配给该用户。

Firebase Admin SDK 可以使后端的过程更加容易(包括发送实际通知)。如果您 没有 来使用 PHP,我建议您使用 Firebase 提供的 official Admin SDKs 之一。

如果您坚持使用 PHP,则有一个 unofficial PHP Admin SDK(免责声明:我是维护者),但作为非官方的,它永远不会具有与由 Firebase 团队支持和维护的官方 SDK。

无论哪种方式 - 请记住,设备令牌可能会随着时间的推移而过期或变得无效(例如,当用户卸载应用程序时),因此您应该定期检查存储的设备令牌是否仍然有效。

我希望这能有所帮助,至少对总体思路有帮助