2016-06-17 15 views
0

这是我第一次做API,并设置了客户端必须发送给我的令牌来访问API内容。Android应用程序开发人员应如何将USERPWD发送给我的PHP API?

所以我的方法来检索此令牌是:

$_SERVER['PHP_AUTH_USER'] 

,但应用程序开发人员一直在说,他无法找到发送这个信息,所以我的API无法识别的方式。

任何想法他应该怎么送我?或者可能$_SERVER['PHP_AUTH_USER']不是正确的方式来检索令牌?

+0

它不会成为你后的'$ _SERVER'变量,但它将取决于你还没有向我们显示的东西 –

+0

我希望他们发送标题中的令牌,然后在我的侧面检索它 –

+0

'getallheaders'或'apache_response_headers'的声音。或者你可以使用POST –

回答

-1

你需要做的,从移动应用中的以下

  1. 发送请求到端点资源[PHP]
  2. PHP为您的应用程序的访问令牌,并返回响应移动。
  3. 移动应用程序使用此标记与每个请求来确定它是否授权调用此资源。
  4. 您可以检查例如从该github上的url以前评论: https://github.com/lucadegasperi/oauth2-server-laravel
0

我们可以通过令牌来获取为$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,对于正常情况下基本身份验证应该可以工作。

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()); 

我认为这将解决你的问题。

相关问题