当前位置: 首页 > 知识库问答 >
问题:

使用php向Google Cloud Messaging发送通知会出现未授权错误401

云伯寅
2023-03-14

搜索有关如何使用GCM但使用PHP而不是servlet发送通知的一些信息,我发现了这个:带有PHP的GCM(谷歌云消息传递)

我测试了这些问题的响应的工作代码,还为浏览器应用程序(带有引用者)创建了一个密钥,并且我授予此ip的权限:.mywebsite.com/(te php文件位于此URL上:“http://www.mywebsite.com/~jma/cHtml5/cap/kk.php”)

但我收到了这个回复:未经授权的错误401。

我做错了什么?

这是php文件:

<?php
    // Replace with real server API key from Google APIs        
    $apiKey = "fictional key";

    // Replace with real client registration IDs
    $registrationIDs = array( "APA91asdasdSDGGS232S13S4213abGqiNhCIXKjlxrkUYe_xTgTacNGB5n16b380XDd8i_9HpKGRHkvm8DDet4_WK3zumjDEKkTRWLgPS7kO-BrKzWz7eWFQaDD9PJ8zA6hlSqL9_zH21P8K22ktGKmo_VIF6YAdU9ejJovrKBTpgQktYkBZBf9Zw","APAasdasd32423dADFG91bHYYxYB7bFiX5ltbJt6A-4MBiNg7l4RS4Bqf3jIfYviaaUfZ810XJo2o66DY9-jdeJk_JR8FIZCyrmCv-eu_WLkGZ8KaoHgEDR_16H2QPm98uHpe1MjKVXbzYc4J89WMmcIrl5tHhWQnIQNzaI6Zp6yyFUNUQ");

    // Message to be sent
    $message = "Test Notificación PHP";

    // Set POST variables
    $url = 'https://android.googleapis.com/gcm/send';

    $fields = array(
        'registration_ids' => $registrationIDs,
        'data' => array( "message" => $message ),
    );

    $headers = array(
        'Authorization: key=' . $apiKey,
        'Content-Type: application/json'
    );

    // Open connection
    $ch = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    //curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    //curl_setopt($ch, CURLOPT_POST, true);
    //curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields ));

    // Execute post
    $result = curl_exec($ch);

    // Close connection
    curl_close($ch);
    echo $result;
    //print_r($result);
    //var_dump($result);
?>

共有2个答案

阎淮晨
2023-03-14

您需要在您的服务器端编码中的API密钥字段中使用服务器应用程序的密钥。创建服务器密钥时,不要在IP地址字段中输入任何内容。

徐博雅
2023-03-14

解决了!!!

您必须为服务器应用程序使用密钥(带IP锁定),而不是浏览器密钥

:)

 类似资料:
  • 为什么我在Maven中会出现“401未授权”错误? 以下是调用(底部为完整日志)时出现的错误: 根据这个sonatype支持页面: “如果您收到401,那是因为maven发送了错误的登录凭据,或者根本没有凭据。” 下面是我采取的步骤,下面是我完整的和文件,下面是和的完整日志。 我使用中的用户/pass成功地登录和退出了sonatype.org网站。 我尝试使用手动部署工件,使用命令 但出现了以下错

  • 我是新的PHP和试图建立一个网站与注册表格。用户应该收到一封带有确认链接的电子邮件(因为我有一个免费的托管服务器,我正在尝试使用gmail服务器)。问题是,我正在努力与电子邮件PHP代码。我尝试使用PHPMailer函数如下: 我尝试了587和465端口。还尝试了ssl和tls。每次尝试运行代码时,都会出现以下错误: 服务器- 还有,我收到一封来自Gmail的邮件,主题是“有人知道你的密码”。我打

  • 我正在尝试使用在Internet上找到的php脚本向iOS应用程序发送通知。我应该为$passphrase赋予什么价值,在哪里可以找到它?以下各项的值也相同: stream_context_set_选项($ctx,'ssl','local_cert','ck.pem')

  • 我正在rails 5中编写一个Api Rest,使用gem'fcm'发送通知。我已经在android应用程序中配置了firebase,我可以从firebase控制台成功发送通知,但从rails api我无法在设备中接收通知,这是我的代码: 这是我的rails控制器: 我从邮递员执行这是执行控制器的路线: http://localhost:3000/acciones/enviar?here 将设备令

  • 我的前端基于Angular 4,后端基于Spring Security的Spring Boot。我正在一个WAR文件中部署所有内容。 我在/src/main/resources中创建了一个静态/登陆文件夹,然后我将生成角度文件的网页包放在该文件夹中。 Angular负责登录过程,因此我在Spring Security中创建了以下规则: 不幸的是,当我尝试使用网络浏览器访问 /login页面进行登录

  • 我需要向多个设备发送GCM通知。在这里,我制作了PHP代码以从MySql获取注册ID数组,并尝试向多个设备发送通知,但这里有一些问题。 我的PHP代码: