Я работаю над проектом 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)
Если вы работаете в эмуляторе и пытаетесь подключиться к серверу, работающему на локальном хосте, IP-адрес 10.0.2.2
http://developer.android.com/tools/devices/emulator.html#networkaddresses
Других решений пока нет …