Я получаю код состояния 404 при попытке получить access_token из Facebook. Это приложение GAE, написанное на Java, и я программно получаю access_token. То есть, как только я получаю «код», я делаю запрос https для получения access_token. Я использую фреймворк restlet.org.
public void getAccessToken( final Map<String,String> filter ) {
//prepare and issue the request. Send in the host and other data
String url = Application.getInstance().getAccessTokenUrl( this.getReference().getHostIdentifier(), filter );
Client client = new Client(Protocol.HTTPS);
client.setConnectTimeout(5000);
Request request = new Request(Method.GET, url);
client.handle(request, new Uniform() {
@Override
public void handle(Request arg0, Response response) {
if ( response.getStatus().isSuccess() ) {
if ( response.isEntityAvailable() ) {
String result = response.getEntityAsText();
String results[] = result.split("&");
String accessTokens[] = results[0].split("=");
filter.put("access_token", accessTokens[1]);
}
} else {
// the user doesn't exist
log.warning("getAccessToken, description - " + response.getStatus().getDescription() + ", code - " + response.getStatus().getCode() + ", all - " + response.getStatus().toString());
setStatus(new Status(Status.CLIENT_ERROR_NOT_FOUND, "Failed to get facebook access code."));
}
}
});
}
, где код, client_id, client_secret и redirectUrl объединяются, чтобы создать правильный http URL.
Это прекрасно работает, когда я запускаю его локально из среды разработки (192.168.1 ... / facebook / signin). Тем не менее, когда я запускаю его на GAE, он возвращает 404 при попытке получить access_token. Я зарегистрировал http-запрос, который посылает GAE, и он правильный. То есть, если я вставляю запрос (https://graph.facebook.com/oauth/access_token?client_id=298631...) в мой браузер, он правильно возвращает access_token. Я считаю, что это подтверждает, что настройки приложения на Facebook правильные.
Итак, он работает правильно, когда код выполняется из моей системы разработки,
он работает правильно, когда я подключаю URL, который GAE отправляет в моем браузере,
сбой происходит только тогда, когда GAE отправляет запрос http.
У кого-нибудь есть предложения по поводу того, что это может быть или что искать?