Сервер возвращает учетные данные AWS cognito

Я работаю над проектом Android, в котором сервер будет пинговать AWS cogntio, чтобы получить IdentityId и Token. Код сервера написан на PHP. Используя метод обновления в классе AWSAbstractCognitoDeveloperIdentityProvider, я хочу пропинговать свой сервер, чтобы получить этот идентификатор и токен. Всякий раз, когда метод обновления пингует мой сервер, сервер должен подключиться к AWS cognito и получить этот идентификатор и токен. Верните этот IdentityId и токен клиенту. но этого не происходит. Вот мой код:

Сторона сервера:

        require 'vendor/autoload.php';

        use Aws\CognitoIdentity\CognitoIdentityClient;
        use Aws\Sts\StsClient;
        use Aws\Credentials\Credentials;
        use Aws\S3\S3Client;

   $Client = CognitoIdentityClient::factory(array(
 'version' => 'latest',
 'profile'=> 'project1',
  'region'  => 'ap-northeast-1'
   ));

      $result = $Client->getOpenIdTokenForDeveloperIdentity(array(
  'IdentityPoolId' => 'ap-northeast-1:b871fa5f-23a2-480d-baa6-b4ed31437244',
  'Logins' => array(
      'login.blupinch.app' => "7386372871",
  ),
  'TokenDuration' => 36000
  ));

  echo $result['IdentityId']."==".$result['Token'];

 }

Код на стороне клиента:

  public class Auth extends AWSAbstractCognitoDeveloperIdentityProvider {


public Auth(String accountId, String identityPoolId, Regions region) {
    super(accountId, identityPoolId, region);


}


@Override
public String getProviderName() {
    return "login.blupinch.app";
}

public String refresh() {

    setToken(null);

    if (getProviderName() != null &&
            !this.loginsMap.isEmpty() &&
            this.loginsMap.containsKey(getProviderName())) {

            Idtoken();

        update(identityId, token);

        return token;



    } else {

        this.getIdentityId();
        return null;
    }
}

public String getIdentityId() {


    identityId = null;
    if (identityId == null) {


        if (getProviderName() != null && !this.loginsMap.isEmpty()
                && this.loginsMap.containsKey(getProviderName())) {

               Idtoken();
            update(identityId, token);
            return identityId;

        } else {
            return super.getIdentityId();
        }

    } else {
        return identityId;
    }

}

public void Idtoken(){

    String line = "";
    String response="";


    String serverurl = "http://10.0.3.2/credentials.php";
    try {
        URL url = new URL(serverurl);
        HttpURLConnection http = (HttpURLConnection) url.openConnection();
        http.setRequestMethod("POST");
        http.setDoInput(true);



        InputStream IS = http.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(IS,"iso-8859-1"));
        while ((line = bufferedReader.readLine())!=null)
        {
            response = response + line;

        }
        bufferedReader.close();
        IS.close();
        http.disconnect();
        String[] splitter = response.split("==");
        identityId = splitter[0];
        token = splitter[1];
        Log.d("IDENTITYID",identityId);
        Log.d("TOKEN",token);

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (UnknownHostException e)
    {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

}

Предупреждения:

           02-29 12:55:45.563 452-799/? W/AudioFlinger: write blocked for  10041 msecs, 6 delayed writes, thread 0xf58ba000
           02-29 12:55:45.779 16968-17029/? W/System.err:                                java.io.FileNotFoundException: http://10.0.3.2/credentials.php
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.example.sandesh.filer.UpDown.Auth.Idtoken(Auth.java:107)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.example.sandesh.filer.UpDown.Auth.refresh(Auth.java:46)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:537)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.amazonaws.auth.CognitoCredentialsProvider.refresh(CognitoCredentialsProvider.java:503)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.amazonaws.auth.CognitoCachingCredentialsProvider.refresh(CognitoCachingCredentialsProvider.java:462)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.example.sandesh.filer.UpDown.upload.doInBackground(upload.java:93) 
           02-29 12:55:45.779 16968-17029/? W/System.err:     at com.example.sandesh.filer.UpDown.upload.doInBackground(upload.java:28)    
           02-29 12:55:45.779 16968-17029/? W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:292)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
           02-29 12:55:45.779 16968-17029/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
           02-29 12:55:45.779 16968-17029/? W/System.err:     at              java.lang.Thread.run(Thread.java:818)

person sandesh    schedule 29.02.2016    source источник


Ответы (1)


Если вы работаете в эмуляторе и пытаетесь попасть на свой сервер, работающий на локальном хосте, IP-адрес будет 10.0.2.2.

http://developer.android.com/tools/devices/emulator.html#networkaddresses

person Mark Mercurio    schedule 29.02.2016
comment
Спасибо за ответ. Но я использую Genymotion. Это 10.0.3.2. - person sandesh; 29.02.2016
comment
Дополнительная информация: я заметил, что сервер с задержкой пингует aws cognito, чтобы получить Identity Id и токен. Что я сделал, так это удалил весь код, кроме эха helloworld. Затем запустил метод обновления. Я обнаружил, что строка helloworld получена, так как нет необходимости в задержке для получения echo helloworld. Эта задержка создает проблему? Я также нашел, когда я открываю код сервера (credentials.php) в браузере. IdentityId и Token не печатаются в браузере (здесь эхо вообще не работает). Но когда я запускаю его из командной строки, как этот php credentilas.php. Это работает нормально. он повторяет Identity Id и токен. - person sandesh; 29.02.2016