gpt4 book ai didi

android - 无法验证我的 ACS token

转载 作者:行者123 更新时间:2023-12-03 04:36:42 25 4
gpt4 key购买 nike

我已经尝试从 android 向 azure 服务总线队列发送消息有一段时间了,但我就是无法让它工作。这是我用于获取 ACS SWT 的代码:

    private void getTokenFromACS() throws ClientProtocolException, IOException {

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://servicebusnamespace-sb.accesscontrol.windows.net/WRAPv0.9/");
List<NameValuePair> parameters = new ArrayList<NameValuePair>(3);
parameters.add(new BasicNameValuePair("wrap_name", "name"));
parameters.add(new BasicNameValuePair("wrap_password", "password associated with the name"));
parameters.add(new BasicNameValuePair("wrap_scope", "Realm url"));


httppost.setEntity(new UrlEncodedFormEntity(parameters));

BasicHttpResponse httpResponse = null;
httpResponse = (BasicHttpResponse)httpclient.execute(httppost);

BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));

String[] tokenVariables = URLDecoder.decode(reader.readLine()).split("&wrap_access_token_expires_in=");


authorizationToken = tokenVariables[0];

}

这工作正常,我得到一个包含wrap_access_token、发行者、受众、expiresOn 和 HMACSHA256 的字符串。

之后我尝试做的是使用此 token 发送消息,如下所示:

    HttpClient requestClient = new DefaultHttpClient();
HttpPost post = new HttpPost("https://servicebusnamespace.servicebus.windows.net/queuename/messages");
post.addHeader("Authorization", "WRAP access_token=\""+authorizationToken+"\"");

Item item = new Item();
Date date = new Date();
item.setDate(date);
item.setId(1);
item.setRoadName("roadname");
item.setSpeed(60.0);
item.setLat(12.12);
item.setLng(12.12);

String json = new GsonBuilder().create().toJson(item, Item.class);
post.setEntity(new ByteArrayEntity(json.getBytes("UTF8")));

HttpResponse httpResponse = requestClient.execute(post);

这总是导致我的 token 未经过身份验证,我收到错误消息,指出我的 token 不包含签名或没有设置受众。可能出了什么问题?

请注意,这是在 Android 上 =)

提前致谢!

最佳答案

您似乎缺少一些代码。您的 authorizationToken 目前类似于:“wrap_access_token=net.windows.servicebus.action%3dLis...”

您唯一想要的是等号之后的部分。

我认为这样可以:

String[] tokenVariables = URLDecoder.decode(reader.readLine()).split("&wrap_access_token_expires_in=")[0].split("=");
authorizationToken = tokenVariables[1];

关于android - 无法验证我的 ACS token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com