这是我第一次做API,并设置了客户端必须发送给我的令牌来访问API内容。Android应用程序开发人员应如何将USERPWD发送给我的PHP API?
所以我的方法来检索此令牌是:
$_SERVER['PHP_AUTH_USER']
,但应用程序开发人员一直在说,他无法找到发送这个信息,所以我的API无法识别的方式。
任何想法他应该怎么送我?或者可能$_SERVER['PHP_AUTH_USER']
不是正确的方式来检索令牌?
这是我第一次做API,并设置了客户端必须发送给我的令牌来访问API内容。Android应用程序开发人员应如何将USERPWD发送给我的PHP API?
所以我的方法来检索此令牌是:
$_SERVER['PHP_AUTH_USER']
,但应用程序开发人员一直在说,他无法找到发送这个信息,所以我的API无法识别的方式。
任何想法他应该怎么送我?或者可能$_SERVER['PHP_AUTH_USER']
不是正确的方式来检索令牌?
你需要做的,从移动应用中的以下
我们可以通过令牌来获取为$headers['Authorization']
。要从Android设置此变量,我们需要遵循。
String credentials = username + ":" + password;
String basicAuth = "Basic " + new String(new Base64().encode(credentials.getBytes()));
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();
myURLConnection.setRequestProperty ("Authorization", basicAuth);
要检查客户端发送令牌或没有,你可以像如下:
if(isset($headers['Authorization'])){
$api_key=$headers['Authorization'];
}
这就是所谓的基本授权,它并不像OAuth2.0安全。如果您需要坚实的安全性,请尝试将您当前的代码更改为OAuth2.0,对于正常情况下基本身份验证应该可以工作。
本例添加几个参数来POST请求:
String url = "https://www.example.com/api.php";
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
// add header
post.setHeader("USERPWD", USERPWD_VALUE);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("locale", ""));
urlParameters.add(new BasicNameValuePair("caller", ""));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
我认为这将解决你的问题。
它不会成为你后的'$ _SERVER'变量,但它将取决于你还没有向我们显示的东西 –
我希望他们发送标题中的令牌,然后在我的侧面检索它 –
'getallheaders'或'apache_response_headers'的声音。或者你可以使用POST –