2016-06-17 9 views
0

これは私の初めてのAPIです。クライアントがAPIコンテンツにアクセスするためには、トークンを設定する必要があります。Android App開発者がUSERPWDをPHP APIに送信する方法を教えてください。

だから、このトークンを取得するための私の方法は次のとおりです。

$_SERVER['PHP_AUTH_USER'] 

しかし、アプリケーション開発者は、彼が私のAPIがそれを認識できないので、この情報を送信する方法を見つけることができないことを言い続けます。

彼はどのように私を送るべきですか?または$_SERVER['PHP_AUTH_USER']はトークンを取得する正しい方法ではありませんか?

+0

それはあなたの後の '$ _SERVER'変数ではありませんが、それはまだあなたが見せてくれたものに依存するでしょう –

+0

私は彼らにヘッダーのトークンを送って、 –

+0

'getallheaders'または' apache_response_headers'を呼び出してください。または単にPOSTを使うことができます –

答えて

-1

あなたは[PHP]

  • PHPアプリのアクセストークンを生成し、携帯電話への応答を返すエンドポイントのリソースにモバイルアプリから次

    1. 送信要求を行う必要があります。
    2. モバイルアプリでは、リクエストごとにこのトークンを使用して、このリソースを呼び出す権限があるかどうかを判断します。私たちは、$headers['Authorization']として取得するためにトークンを渡すことができます https://github.com/lucadegasperi/oauth2-server-laravel
  • 0

  • あなたはこのgithubののURLから、前のコメントの例を確認することができます。 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に変更し、通常のシナリオではBasic Authが動作するはずです。

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

    私はこれがあなたの問題を解決すると思います。

    関連する問題