如何安全地获取和使用Facebook App Access令牌使用PHP和Javascript发送通知

艾米莉

我正在努力寻找正确的方法来安全地获取应用访问令牌,以及如何使用它向我的应用的用户发送通知。

通过阅读Facebook的文档以及此处的其他问题,我认为应用程序令牌应仅在服务器端生成,因此我试图将Graph API调用包含在php脚本中以获取令牌,而不是将其包含在php脚本中我的客户端Javascript代码。这是我为实现此目的而编写的php脚本:

getapptoken.php:

<?php
$servername = "MYSERVERNAME";
$username = "MYUSERNAME";
$password = "MYPASSWORD";
$dbname = "MYDBNAME";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "
<script type=\"text/javascript\">
    GET /oauth/access_token?
        client_id={MYAPPID}
        &amp;client_secret={MYAPPSECRET}
</script>
"
    }

catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}
$conn = null;
?>  

我在此php文件中包含我的App ID和App Secret,然后尝试调用Graph API以获取我的App访问令牌,然后尝试回显响应(访问令牌)到我的Javascript文件/函数(位于客户端),以便可以用于在下面发送通知:

 function deliverNotifications(){

    // Using AJAX to get the apptoken as the response from getapptoken.php
    // This response is then stored in the variable named "apptoken"
    $.ajax({
            url: 'scripts/getapptoken.php',
            type: "POST",
            success: function(response){
                if (response.error) {
                    console.log('Error: ' + response.error.message);
                }
                else {

                var apptoken = response;

    //Defining the Array of IDs to send notifications to
    var myArray = [45563562722445, 83724562462, 245622722725, 367345634562];

    //Iterating through each ID and sending a notification to each one
    for (var i = 0; i < myArray.length; i++) { 

        FB.api( 
       "/"+myArray[i]+"/notifications",
        "POST",
       {
            "template": "This is a test notification!",
// Trying to use the variable named "apptoken" here to include the required app token
            "access_token": ""+apptoken+""
        },
        function (response) {
          if (response && !response.error) {
              console.log("notification should be sent.");
          } else {
          console.log(response);
             }
          }
         );             
        }}

不幸的是,这不起作用,我什至不确定这是否是一种安全的方法,因为我将访问令牌存储在客户端的变量内。

我真的很感谢任何人对正确方法的帮助或建议。我的代码完全不正确吗?还是只需要一些小的改动?

先感谢您!

卢施恩

您不需要“获取应用程序访问令牌”,该应用程序令牌只是应用程序ID和应用程序密钥的组合:

$app_token = APPID . '|' . APPSECRET;

当然,只使用一台服务器即可。不要将应用令牌发送给客户端!您可以使用PHP SDK来使用通知端点,也可以自己使用cURL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何安全地使用coxph和子集或权重?

来自分类Dev

如何安全地实现Facebook登录和设计数据库?

来自分类Dev

如何安全地实现Facebook登录和设计数据库?

来自分类Dev

如何安全地访问和存储活动python文件中使用的主安全密钥?

来自分类Dev

如何在 CircleCI 中安全地使用 Gemfury 令牌?

来自分类Dev

使用 Google App Engine 和 Firebase Cloud Messaging 发送通知

来自分类Dev

如何使用套接字安全地实现通知系统?

来自分类Dev

如何安全地将Passport与Node.js和MongoDB结合使用?

来自分类Dev

如何安全地在ASP.NET和Azure的web.config外部使用凭据

来自分类Dev

如何安全地混合使用同步代码和异步代码?

来自分类Dev

如何安全地为该情景使用new和delete

来自分类Dev

使用 identityserver4 和 aspnet 身份时如何安全地实现空闲超时?

来自分类Dev

如何安全地存储和处理JWT的密钥

来自分类Dev

如何正确和线程安全地重用Jackson ObjectReader?

来自分类Dev

如何安全地混合同步和异步代码?

来自分类Dev

如何安全地调用TerminateThread和FreeLibrary(WinAPI,C ++)

来自分类Dev

如何安全地存储和管理180个密码?

来自分类Dev

安全地使用WeakReference

来自分类Dev

如何使用GCD安全地锁定变量?

来自分类Dev

如何使用PouchDB安全地连接到Cloudant?

来自分类Dev

如何通过通用模板“安全地”使用多态?

来自分类Dev

如何安全地在主线程上使用[NSTask waitUntilExit]?

来自分类Dev

如何使用Net :: OpenSSH安全地写入远程文件

来自分类Dev

如何使用open()安全地设置标志?

来自分类Dev

如何使用TeamCity安全地进行生产发行?

来自分类Dev

如何安全地使用C中的枚举?

来自分类Dev

如何使用GCD安全地锁定变量?

来自分类Dev

如何通过通用模板“安全地”使用多态?

来自分类Dev

如何安全地使用JSON.stringify?

Related 相关文章

  1. 1

    如何安全地使用coxph和子集或权重?

  2. 2

    如何安全地实现Facebook登录和设计数据库?

  3. 3

    如何安全地实现Facebook登录和设计数据库?

  4. 4

    如何安全地访问和存储活动python文件中使用的主安全密钥?

  5. 5

    如何在 CircleCI 中安全地使用 Gemfury 令牌?

  6. 6

    使用 Google App Engine 和 Firebase Cloud Messaging 发送通知

  7. 7

    如何使用套接字安全地实现通知系统?

  8. 8

    如何安全地将Passport与Node.js和MongoDB结合使用?

  9. 9

    如何安全地在ASP.NET和Azure的web.config外部使用凭据

  10. 10

    如何安全地混合使用同步代码和异步代码?

  11. 11

    如何安全地为该情景使用new和delete

  12. 12

    使用 identityserver4 和 aspnet 身份时如何安全地实现空闲超时?

  13. 13

    如何安全地存储和处理JWT的密钥

  14. 14

    如何正确和线程安全地重用Jackson ObjectReader?

  15. 15

    如何安全地混合同步和异步代码?

  16. 16

    如何安全地调用TerminateThread和FreeLibrary(WinAPI,C ++)

  17. 17

    如何安全地存储和管理180个密码?

  18. 18

    安全地使用WeakReference

  19. 19

    如何使用GCD安全地锁定变量?

  20. 20

    如何使用PouchDB安全地连接到Cloudant?

  21. 21

    如何通过通用模板“安全地”使用多态?

  22. 22

    如何安全地在主线程上使用[NSTask waitUntilExit]?

  23. 23

    如何使用Net :: OpenSSH安全地写入远程文件

  24. 24

    如何使用open()安全地设置标志?

  25. 25

    如何使用TeamCity安全地进行生产发行?

  26. 26

    如何安全地使用C中的枚举?

  27. 27

    如何使用GCD安全地锁定变量?

  28. 28

    如何通过通用模板“安全地”使用多态?

  29. 29

    如何安全地使用JSON.stringify?

热门标签

归档