0

我目前正在处理一个适配器调用,该调用在 Authorization 标头中采用 OAuth 令牌。该请求在 FireFox RestClient 和 xhr get... 中运行良好,但在 Worklight 适配器中失败,并显示用户需要登录的错误。如果用户没有传入授权标头,这与用户将看到的错误相同。

wl适配器:

function getFriends(accessToken) {
    var authtok = 'Bearer ' + accessToken;
    var input = {
        method : 'get',
        headers: {Authorization: authtok},
        path : '/connections/opensocial/rest/people/@me/@self'
    };  
    return WL.Server.invokeHttp(input);
}

还有其他人看到这样的错误吗?有没有办法跟踪工作灯适配器调用以检查发送到请求中的标头是否符合预期?

4

1 回答 1

2

看起来您的服务器也期待标题中的主机名。尝试将您的输入更改为:

var input = {
        method : 'get',
        returnedContentType : 'json',
        path : '/connections/opensocial/rest/people/@me/@self',
        headers: {
            'Authorization': authtok,  
            Host: "HOSTNAME THAT IS USED IN THE .XML FILE"
        }
    };

因此,如果您的适配器的 xml 文件如下所示:

<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>https</protocol>
            <domain>jeremy.server.whatever.com</domain>
            <port>443</port>    
            -->     
</connectionPolicy>

然后你的标题应该是这样的:

headers: {
    'Authorization': authtok,  
    Host: "jeremy.server.whatever.com"

}

于 2013-10-31T17:47:34.663 回答