Android App开发人员应该如何将USERPWD发送给我的PHP API?

时间:2016-06-17 02:28:50

标签: php android

这是我第一次做API而且我设置了一个令牌,客户端必须发送该令牌才能访问API内容。

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

$_SERVER['PHP_AUTH_USER']

但App开发人员一直说他找不到发送此信息的方式,因此我的API无法识别它。

知道他应该怎么送我?或者$_SERVER['PHP_AUTH_USER']可能不是检索令牌的正确方法吗?

3 个答案:

答案 0 :(得分: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 ,对于正常情况基本身份验证应该有效。

答案 1 :(得分: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());

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

答案 2 :(得分:-1)

您需要执行以下操作

  1. 从移动应用程序发送请求到端点资源[php]
  2. php为您的应用生成访问令牌并将响应返回给移动设备。
  3. 移动应用程序将此令牌与每个请求一起使用,以确定它是否授权调用此资源。
  4. 您可以查看此github网址上先前评论的示例: https://github.com/lucadegasperi/oauth2-server-laravel