Oracle APEX oAuth:无法从第二次开始获取访问令牌/授权代码

时间:2016-03-22 19:55:22

标签: oracle oauth oracle-apex

我正在尝试使用授权码ProcessFlow从Oracle Apex获取oAuth令牌。

参考:http://www.oracle.com/technetwork/developer-tools/rest-data-services/documentation/listener-dev-guide-1979546.html#acquiring_a_token_using_the_authorization_code_protocol_flow

我做的步骤:

1)使用重定向URI在Apex中注册oAuth客户端并获取

Client ID : MY_CLIENT_ID
Client Secret : MY_CLIENT_SECRET
Authorization URI : https://apex.oracle.com/pls/apex/MY_WORK/oauth2/auth?response_type=code&client_id= MY_CLIENT_ID&client_secret= MY_CLIENT_SECRET &state=_replace_with_a_unique_value_

2)当我在网络浏览器中打开授权URI并单击“允许访问”时,我最终获得了URL中的授权码:

https://apex.oracle.com/pls/apex/MY_WORK/hr/?code=MY_AUTH_CODE&state=a19b7f7c-c31d-9c79-3f5c-bf6893a03552

3)我在Web主机中创建了一个PHP页面(http://server.com/oauth/index.php),并使用带有以下参数的cURL从APEX服务器请求了访问令牌 Client ID : MY_CLIENT_ID Client Secret : MY_CLIENT_SECRET Authorization Code : MY_AUTH_CODE URI : https://apex.oracle.com/pls/apex/MY_WORK/oauth2/token

PHP代码:

<?php

 //actual cURL
 /*curl -i -d "grant_type=authorization_code&code= MY_CLIENT_ID " \
 --user MY_CLIENT_SECRET : MY_AUTH_CODE \
 https://apex.oracle.com/pls/apex/MY_WORK/oauth2/token*/

 $pageurl = "https://apex.oracle.com/pls/apex/MY_WORK/oauth2/token";
 $ch = curl_init($pageurl);
 curl_setopt($ch, CURLOPT_HEADER, TRUE); // -i
 curl_setopt($ch,CURLOPT_POST, 2);
 curl_setopt($ch,CURLOPT_POSTFIELDS, "grant_type=authorization_code&code=  MY_CLIENT_ID "); // -d
 curl_setopt($ch,CURLOPT_USERPWD, " MY_CLIENT_SECRET : MY_AUTH_CODE "); // --user
 $resp = curl_exec($ch);
 curl_close($ch);
 echo $resp;
 ?>

4)当我访问PHP URL http://server.com/oauth/index.php时,我最终获得了JSON中的访问令牌:

 {"access_token":"MY_ACCESS_TOKEN","token_type":"bearer","expires_in":36000,"refresh_token":" MY_REFRESH_ACCESS_TOKEN "}1

所以我能够成功获取访问令牌,但问题是当我尝试通过打开PHP URL http://server.com/oauth/index.php第二次获取ACCESS_TOKEN时。

我最终获得了无效授权:{“error”:“invalid_grant”} 1

所以我决定用PHP更新新的授权代码,我应该通过访问授权URI来获得,如第2步所示,但我最终得到的是400-Bad Request。

但是,如果从第1步开始做所有事情,它的工作正常,但在第2次请求中却遇到了同样的问题。

在我的应用程序中,我只想再次执行第4步以获取新令牌,这导致了上述问题。

所以最后我想知道为什么我无法得到 1.第二次使用授权码访问令牌,如步骤3所示 2.第二次授权代码使用授权URI,如步骤

请给我一些建议,以编程方式从Oracle APEX获取ACCESS_TOKEN。

0 个答案:

没有答案