0

RequestFactoryを使用してAppEngineデータストアのエンティティを正常に操作するAndroidアプリがあります。

AppEngineサービスで使用したい

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

現在のAndroidユーザーに関する情報を取得しますが、getCurrentUser()はnullを返します。

私のAndroidアプリはどのようにしてRequestFactoryに誰がログインしているのかを知らせますか?

この質問は、開発モードと本番モードに適用されます。

ありがとう。

4

1 に答える 1

0

古いAppEngineConnectedAndroid Eclipseウィザードコードにはそれほど明白ではない答えがありますが、GPEでは使用できなくなりました(このウィザードで生成されたコードのUtil.javaを参照してください)。これには次のものが含まれます。

T requestFactory = RequestFactorySource.create(factoryClass);
requestFactory.initialize(new SimpleEventBus(),
            new AndroidRequestTransport(uri, authCookie));

public AndroidRequestTransport(URI uri, String cookie) {
        this.uri = uri;
        this.cookie = cookie;
    }

    public void send(String payload, TransportReceiver receiver) {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost();
        post.setHeader("Content-Type", "application/json;charset=UTF-8");
        post.setHeader("Cookie", cookie);

        post.setURI(uri);
        Throwable ex;
        try {
            post.setEntity(new StringEntity(payload, "UTF-8"));
            HttpResponse response = client.execute(post);
            if (200 == response.getStatusLine().getStatusCode()) {
                String contents = readStreamAsString(response.getEntity().getContent());
                receiver.onTransportSuccess(contents);
            } else {
                receiver.onTransportFailure(new ServerFailure(response.getStatusLine()
                        .getReasonPhrase()));
            }
            return;
        } catch (UnsupportedEncodingException e) {
            ex = e;
        } catch (ClientProtocolException e) {
            ex = e;
        } catch (IOException e) {
            ex = e;
        }
        receiver.onTransportFailure(new ServerFailure(ex.getMessage()));
    }

GPEウィザードからのそのコードを使用して、私のためにトリックを行いました。

于 2013-01-06T04:01:51.007 に答える