Не могу получить Facebook, получая access_token через GAE - PullRequest
1 голос
/ 09 ноября 2011

Я получаю код состояния 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.

У кого-нибудь есть предложения по поводу того, что это может быть или что искать?

...