0

我需要知道如何从 Orange Message Api 获取访问令牌。我写了一个应该这样做的函数,但它似乎包含一个错误。它返回一个异常[远程服务器返回一个 errro 400 错误请求]。我不知道出了什么问题

 class MessageApi
{

    public  void GetAccessToken()
    {
        string AuthHeader = "My Authorization header";
        HttpWebRequest requeust = (HttpWebRequest)WebRequest.Create("https://api.orange.com/oauth/v2/token");
        requeust.ContentType = "application/json";
        requeust.Method = "POST";
        JsonObject JsonData = new JsonObject();
        JsonData["authorization"] = AuthHeader;
        JsonData["grant_type"] = "client_credentials";

        using (var streamWriter = new StreamWriter(requeust.GetRequestStream()))
        {

            streamWriter.Write(JsonData);

        }
        var httpResponse = (HttpWebResponse)requeust.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
        }

    }
}
4

2 回答 2

0

首先执行此操作: client_id 和 client_secret 用于指定 authentication_header。它的值由关键字“Basic”组成,后跟一个空格和您的 client_id、“:”和您的 client_secret 连接的 base64 编码

您需要在此站点中将您的 client_id:client_secret 转换为 base64:base64 编码

示例

client_id = djdv6+4fb64b+6fd+6b

client_secret = 3464ggb646

串联 = djdv6+4fb64b+6fd+6b:3464ggb646

djdv6+4fb64b+6fd+6b:3464ggb646 == d64b6b464b6g4bg65465gn6n==

在这样做之后:

curl -X POST -H "Authorization: Basic myBase64Encode" -d "grant_type=client_credentials" https://api.orange.com/oauth/v2/token

将 myBase64Encode 替换为连接的 clientId 和 clientSecret 转换为 base 64 ==> d64b6b464b6g4bg65465gn6n==

于 2018-12-27T17:00:15.533 回答
0

Authorization 标头应该在请求标头中。

而不是做

JsonData["authorization"] = AuthHeader;

尝试

requeust.Headers["Authorization"] = AuthHeader;
于 2017-06-19T21:36:25.610 回答