2016-02-27 62 views
1

我有双重,三重和四重检查,我有正确的主密钥,我通过。我的参数直接来自UA网站,所以它不可能是这样。任何人看到我在这里做错了吗?当我试图通过Urban Airship推送时,我怎么总是收到“响应代码401的请求失败”?

Parse.Cloud.define("sendPush", function(request, response) { 

    var Buffer = require('buffer').Buffer; 

    var parameters = { 
    "audience" : "all", 
    "device_types" : "all", 
    "notification" : { 
     "alert" : "Hello from Urban Airship." 
    } 
    }; 

    var params = JSON.stringify(parameters); 

    Parse.Cloud.httpRequest({ 
    url: "https://go.urbanairship.com/api/push/", 
    method: 'POST', 
    headers: { 
     "Content-Type" : "application/json", 
     "Authorization" : 'Basic ' + new Buffer('MASTER_KEY').toString('base64'), 
     "Accept" : "application/vnd.urbanairship+json; version=3;" 
    }, 
    body: params, 
    success: function(httpResponse) { 
     response.error(httpResponse); 
    }, 
    error: function(httpResponse) { 
     response.error('Request failed with response code ' + httpResponse.status); 
    } 
    }); 

}); 

我也尝试添加在APP_SECRET:

"Authorization" : 'Basic ' + new Buffer('APP_SECRET':'MASTER_KEY').toString('base64'), 

回答

1

,如果你要包括在您的要求的应用程序键不是从您的代码示例清楚。向Urban Airship发送的API请求使用HTTP基本身份验证。用户名部分是应用程序密钥,本例中的密码部分是主密钥。应用程序秘密仅限于安全性较低的API,适用于分布式应用程序。主密钥用于发送消息和其他服务器API请求。

Urban Airship为troubleshooting common API issues提供指南。

+0

是的,我已阅读并重新阅读所有故障排除解决方案,并尝试了“授权”字段的所有解决方案和许多其他变体和组合,但似乎没有任何工作。我可以很容易地从UA网站推送,但是这个Parse服务器端代码似乎无法获得授权。我在这里陷入死胡同,重新思考我的方法。 – Silverstar

0

我有同样的问题,并试图找出网络诊断工具两天以上。因为在调试之后,我检查了我是否向UA发送了正确的凭据。毕竟我打电话给UA,并要求他们检查证书(在我的例子中是appKey和appToken,用java-connect API进行流式传输),如果它们仍然有效的话。他们检查并批准了验证,但以防万一给我一个新的凭据。我可以连接新的凭据!
这是肯定的UA错误,因为我测试了另一个测试应用程序,这是一个桌面Java应用程序,我可以连接到服务器(使用相同的appKey和appToken)并获取事件,而我得到了整个时间在我的主应用程序中出现401错误,这是在TomCat 8.0上运行的Web应用程序。这意味着它在同一时间为一个应用程序使用相同的凭证,并且不适用于其他应用程序。

相关问题