无法通过GAE获取facebook获取access_token

时间:2011-11-09 15:13:12

标签: google-app-engine authentication authorization facebook-apps facebook-authentication

我在尝试从facebook获取access_token时获得的状态代码为404。这是一个用Java编写的GAE应用程序,我以编程方式获取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."));
            }
        }
    });
}

其中code,client_id,client_secret和redirectUrl都组合在一起以创建正确的http网址。

当我从我的开发环境(192.168.1 ... / facebook / signin)本地运行它时,这非常有效。但是,当我在GAE上运行它时,它在尝试检索access_token时返回404。我已经记录了GAE正在发送的http请求,这是正确的。也就是说,如果我将请求(https://graph.facebook.com/oauth/access_token?client_id=298631 ...)插入浏览器,它会正确返回access_token。我相信这证实了Facebook上的应用程序设置是正确的。

因此,当代码从我的开发系统执行时,它运行正常, 当我插入GAE在浏览器中发送的URL时,它正确运行, 它只在GAE发送http请求时失败。

有没有人对这可能是什么或寻找什么有任何建议?

0 个答案:

没有答案