我正在一个处理 Instagram 图片的网站上工作。
我必须将用户引导到 Instagram 登录页面进行验证。这个过程需要我的网站在 URL 中发送几个参数,用于授权。格式如下。
来自 instagram 文档 -
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
当我使用 GET 请求访问 Instagram URL 时,它工作正常。但现在我想从 URL 中隐藏这些值,并对用户隐藏它。
所以我决定编写一个 JSF 页面,在 windows.onload 上将表单参数提交为隐藏并点击 Instagram URL。这样我可以隐藏参数。
JSF 页面
<h:body>
<h:form prependId="false">
<h:inputHidden id="client_id" value="#{applicationBean.instagramClientID}" /><br/>
<h:inputHidden id="redirect_uri" value="#{applicationBean.instagramRedirectUrl}" /><br/>
<h:inputHidden id="response_type" value="code" />
</h:form>
<script type="text/javascript">
window.onload = function submitPage() {
document.forms[0].action="#{applicationBean.instagramAuthUrl}";
document.forms[0].submit();
}
</script>
</h:body>
但这从 instagram 方面失败,给出代码错误 400。
{"code": 400, "error_type": "OAuthException", "error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"}
我检查了这些值,它们似乎都很好。我唯一注意到的是一个“form-id”也被传递了。我认为这会导致授权失败,因为我只需要发送特定的参数。如果为真,我该如何使用 POST 请求来克服这个问题?
或者我在我的 POST 请求中做错了什么?
提前致谢。
环境:Java 1.6,JSF 2