Android AccountManagerFuture getResult在尝试获取授权令牌时提供IOEXcelption

时间:2012-03-19 10:34:43

标签: android google-app-engine authorization token

关于从Google帐户获取授权令牌,我正在关注Nick example。 我在调用AccountManagerFuture getResult时遇到困难。我正在使用我的设备(HTC欲望)和从Eclipse启动的本地谷歌应用程序引擎。如果我通过手机连接到互联网,我就可以获得身份验证令牌。但我想在当地脱机做。你知道我是否应该上网以使其运作? 如果没有,则不清楚getResult方法的作用。它是从某个地方的谷歌服务器检索令牌吗? 感谢。

@Override
protected void onResume() {
    super.onResume();
    Intent intent = getIntent();
    AccountManager accountManager = AccountManager.get(getApplicationContext());
    Account account = (Account)intent.getExtras().get("account");

    accountManager.getAuthToken(account, "ah", false, new GetAuthTokenCallback(), null);

}

private class GetAuthTokenCallback implements AccountManagerCallback<Bundle> {
    public void run(AccountManagerFuture<Bundle> result) {
        Bundle bundle;
        try {

            System.out.println("result.isCancelled"+result.isCancelled());
            // this prints false

                            System.out.println("result.isDone"+result.isDone());
            //this prints true


            bundle = result.getResult();
            // when getResult is called I get an IOException without further details

            Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT);
            if(intent != null) {
                    startActivity(intent);
            } else {
                onGetAuthToken(bundle);
            }
        } catch (OperationCanceledException e) {
            e.printStackTrace();
        } catch (AuthenticatorException e) {
            e.printStackTrace();
        } catch (IOException e) {

                e.printStackTrace();
        }
    }
};

03-19 13:58:03.933:W / System.err(1801):java.io.IOException 03-19 13:58:03.933:W / System.err(1801):at android.accounts.AccountManager.convertErrorToException(AccountManager.java:1419) 03-19 13:58:03.933:W / System.err(1801):在android.accounts.AccountManager.access $ 400(AccountManager.java:134) 03-19 13:58:03.933:W / System.err(1801):在android.accounts.AccountManager $ AmsTask $ Response.onError(AccountManager.java:1280) 03-19 13:58:03.933:W / System.err(1801):at android.accounts.IAccountManagerResponse $ Stub.onTransact(IAccountManagerResponse.java:69) 03-19 13:58:03.933:W / System.err(1801):在android.os.Binder.execTransact(Binder.java:288) 03-19 13:58:03.933:W / System.err(1801):at dalvik.system.NativeStart.run(Native Method)

2 个答案:

答案 0 :(得分:2)

我遇到了这个问题,这是因为我的wifi连接已经死亡。确保您已连接到互联网。

答案 1 :(得分:0)

您可能正在使用不支持Google API的图片。 确保使用安装了Google API的Android SDK管理器,然后检查Android虚拟设备以确定您使用的是Google API作为目标