2017-01-17 30 views
0

我遵循Huddle Api指令获取访问令牌。我使用PowerShell来发布它的方法如下:需要得到所需的http post

$body = { '@grant_type' = 'authorization_code'; client_id = 'xxxxx'; 
      redirect_uri = 'myAppServer.com'; code = '123abcdef' } 

Invoke-WebRequest -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post 

这工作,我得到的“200 OK”的回应,也显示:

POST /token HTTP/1.1 
Host: login.huddle.net 
Content-Type: application/x-www-form-urlencoded 

grant_type=authorization_code&client_id=s6BhdRkqt&redirect_uri=MyAppServer.com/receiveAuthCode&code=i1WsRn1uB1 

PowerShell的,我现在用的就是命令访问令牌的激活。我将如何检索访问令牌号码。例如,我需要的输出,如他们在指令中提到的那样:

HTTP/1.1 200 OK 
Content-Type: application/json 
Cache-Control: no-store 

{ 
"access_token":"S1AV32hkKG", 
"expires_in":300, 
"refresh_token":"8xLOxBtZp8" 
} 

我认为它有一些ContentType。所以我尝试了“application/Json”,但事实并非如此。有什么建议么?

回答

1

您使用了错误的cmdlet集的响应。既然你提到获取StatusCode,Content,RawContent等的值,它告诉我们你正在使用Invoke-WebRequest。这个cmdlet真棒......但不适用于使用通常为REST格式并使用JSON的API。 IWR可以处理该请求,但您必须深入研究$Response.Content并从JSON转换。

而不是Invoke-WebRequest,请尝试使用Invoke-RestMethod。这很可能是您获取返回的AccessCode,但是作为JSON格式的属性。 Invoke-RestMethod将本地解析并将JSON转换为PowerShell对象。你可以把它分为Invoke-WebRequest,它应该只是工作

Invoke-RestMethod -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post -body $body 
+0

感谢您的帮助。对此,我真的非常感激。它的回应并不是我认为的价值,也可能是它的名字。我已经联系了Huddle。希望能从他们那里得到答案。再次感谢 – Zz11

+0

我打算查看API文档,我认为我看到了问题。我稍后会在今天稍后更新 – FoxDeploy

+0

您是否已经注册了API令牌? (必须发送电子邮件给他们,如下所列:https://github.com/Huddle/huddle-apis/wiki/OAuth%20Integration) – FoxDeploy

0

如果使用调用-RestMethod可以进行调用

$response = Invoke-RestMethod -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post"

时则$response.access_token$response.expires_in$response.refresh_token

+0

对不起,延迟回复。作为回应,我没有得到这些领域。只有可用的字段是:状态代码,内容,RawContent,表单,标题,图像,表单,链接ParsedHtml。 – Zz11

+0

有没有其他办法,我可以检索所需的信息? – Zz11