如何将 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 用户映射到您网站数据库中的用户。
我认为涉及两个一般步骤:
- 将 Firebase 用户映射到 PHP 后端中的用户
- Storing/Connecting 您后端的设备令牌
0。从您的应用程序向您的 PHP 后端发出经过身份验证的请求
- 在用户的设备上签名 in/Register
- Retrieve the user's current ID token
- 使用 ID 令牌验证从您的应用程序到 PHP 后端的请求
- Verify the ID token in your PHP backend(不要跳过这个,重要的是拒绝 JWT 不是 由您的应用程序发送)
您现在可以通过访问 JWT 的 sub
声明来访问用户的 Firebase UID。
1.将 Firebase 用户映射到 PHP 后端
中的用户
你应该只需要这样做一次。
- 验证后,使用 ID 令牌 fetch the user's account info
- 使用帐户信息中的电子邮件并将其与您的 PHP 应用程序网站数据库中的用户匹配。
- 将 Firebase UID 作为 属性 存储在 PHP 应用程序的本地用户
- 下次收到 ID 令牌时,您无需再获取帐户信息,只需搜索具有 Firebase UID 的本地用户即可
2。 Storing/Assigning 您后端的设备令牌
- 在用户的设备上,retrieve the device token/registration token
- 对于经过身份验证的请求,将注册令牌发送回您的 PHP 后端。
- 在后端,您可以使用 ID 令牌中的 Firebase UID 查找本地用户并将设备令牌分配给该用户。
Firebase Admin SDK 可以使后端的过程更加容易(包括发送实际通知)。如果您 没有 来使用 PHP,我建议您使用 Firebase 提供的 official Admin SDKs 之一。
如果您坚持使用 PHP,则有一个 unofficial PHP Admin SDK(免责声明:我是维护者),但作为非官方的,它永远不会具有与由 Firebase 团队支持和维护的官方 SDK。
无论哪种方式 - 请记住,设备令牌可能会随着时间的推移而过期或变得无效(例如,当用户卸载应用程序时),因此您应该定期检查存储的设备令牌是否仍然有效。
我希望这能有所帮助,至少对总体思路有帮助
我构建了一个 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 用户映射到您网站数据库中的用户。
我认为涉及两个一般步骤:
- 将 Firebase 用户映射到 PHP 后端中的用户
- Storing/Connecting 您后端的设备令牌
0。从您的应用程序向您的 PHP 后端发出经过身份验证的请求
- 在用户的设备上签名 in/Register
- Retrieve the user's current ID token
- 使用 ID 令牌验证从您的应用程序到 PHP 后端的请求
- Verify the ID token in your PHP backend(不要跳过这个,重要的是拒绝 JWT 不是 由您的应用程序发送)
您现在可以通过访问 JWT 的 sub
声明来访问用户的 Firebase UID。
1.将 Firebase 用户映射到 PHP 后端
中的用户你应该只需要这样做一次。
- 验证后,使用 ID 令牌 fetch the user's account info
- 使用帐户信息中的电子邮件并将其与您的 PHP 应用程序网站数据库中的用户匹配。
- 将 Firebase UID 作为 属性 存储在 PHP 应用程序的本地用户
- 下次收到 ID 令牌时,您无需再获取帐户信息,只需搜索具有 Firebase UID 的本地用户即可
2。 Storing/Assigning 您后端的设备令牌
- 在用户的设备上,retrieve the device token/registration token
- 对于经过身份验证的请求,将注册令牌发送回您的 PHP 后端。
- 在后端,您可以使用 ID 令牌中的 Firebase UID 查找本地用户并将设备令牌分配给该用户。
Firebase Admin SDK 可以使后端的过程更加容易(包括发送实际通知)。如果您 没有 来使用 PHP,我建议您使用 Firebase 提供的 official Admin SDKs 之一。
如果您坚持使用 PHP,则有一个 unofficial PHP Admin SDK(免责声明:我是维护者),但作为非官方的,它永远不会具有与由 Firebase 团队支持和维护的官方 SDK。
无论哪种方式 - 请记住,设备令牌可能会随着时间的推移而过期或变得无效(例如,当用户卸载应用程序时),因此您应该定期检查存储的设备令牌是否仍然有效。
我希望这能有所帮助,至少对总体思路有帮助