【问题标题】:What's the best workflow to authenticate a Google Account in my Android App?在我的 Android 应用中验证 Google 帐户的最佳工作流程是什么?
【发布时间】:2012-04-18 04:55:25
【问题描述】:

我正在尝试遵循这个示例:http://code.google.com/p/google-api-java-client/source/browse/tasks-android-sample/src/main/java/com/google/api/services/samples/tasks/android/TasksSample.java?repo=samples

我的代码写得有点糟糕,但它是在 Google Code 中发布的。我试图建立的工作流程在这里:http://code.google.com/p/phone-to-desktop/source/browse/src/net/xisberto/phonetodesktop/PhoneToDesktopActivity.java?spec=svnd70158809aeb1ba00e26a33dc7110ade33b76427&name=google-tasks&r=d70158809aeb1ba00e26a33dc7110ade33b76427

在我最后一次尝试中,当应用程序转到以下方法时:

private void chooseAccount() {
    Log.i(getPackageName(), "Starting authenticate");
    AccountManager manager = AccountManager.get(getApplicationContext());
    manager.getAuthTokenByFeatures(
                "google.com",
                "Manage your tasks",
                null, PhoneToDesktopActivity.this, null, null,
                new AccountManagerCallback<Bundle>() {
                        @Override
                        public void run(AccountManagerFuture<Bundle> future) {
                            try {
                                Bundle bundle = future.getResult();
                                //So we save the account and token
                                setAccountName(bundle.getString(PREF_ACCOUNT_NAME));
                                setAuthToken(bundle.getString(PREF_AUTH_TOKEN));
                                Toast.makeText(getApplicationContext(),
                                    "Account authenticated: " +
                                    bundle.getString(PREF_ACCOUNT_NAME) + "\n" +
                                    bundle.getString(PREF_AUTH_TOKEN),
                                    Toast.LENGTH_SHORT).
                                show();
                                //Then we create the list we will use
                                createList();
                            } catch (OperationCanceledException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (AuthenticatorException e) {
                                Log.e(getApplicationInfo().packageName, e.getMessage(), e);
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                },
                null);
}

我得到的只是没有视觉上的改变和 DDMS 中的这些消息:

04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488): bind failure
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488): android.accounts.AuthenticatorException: bind failure
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at android.accounts.AccountManager.convertErrorToException(AccountManager.java:1450)
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at android.accounts.AccountManager.access$400(AccountManager.java:138)
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at android.accounts.AccountManager$AmsTask$Response.onError(AccountManager.java:1296)
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at android.accounts.IAccountManagerResponse$Stub.onTransact(IAccountManagerResponse.java:69)
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at android.os.Binder.execTransact(Binder.java:339)
04-18 00:59:53.187: E/net.xisberto.phonetodesktop(10488):   at dalvik.system.NativeStart.run(Native Method)

任何可以帮助的帮助/教程/代码示例?

提前致谢。

【问题讨论】:

  • 我可以帮助你。请告诉我你想使用 Gmail 帐户身份验证吗?
  • 我想访问任务服务。 “Gmail 帐户身份验证”是什么意思?

标签: android google-account google-tasks-api google-tasks


【解决方案1】:

您使用邮件 jar 文件、activation.jar 和其他 jar 文件使用,以下代码用于连接电子邮件应用程序到服务器电子邮件..

            Properties props = System.getProperties();
            props.setProperty("mail.store.protocol", "imaps");
            props.put("mail.smtp.starttls.enable","true");
            Authenticator auth = new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication("USEREMAILID","PASSWORD ");
                    }
            };
            sessioned= Session.getDefaultInstance(props, auth);
            store = sessioned.getStore("imaps");
            store.connect("smtp.gmail.com","USEREMAILID","PASSWORD ");

希望对你有帮助!

【讨论】:

    【解决方案2】:

    好的,我必须管理身份验证。我无法理解要设置的过程和值。现在我的代码写得更好,效果更好。

    【讨论】:

    • 你能解释一下你做了什么并分享知识吗?
    • @xisberto - 这是评论,不是答案。如果你要把它作为答案,你必须用代码拼出解决方案。 ta vacilando,Xb3rt0...
    • 好的,明白了。正如我所说,我的代码是开源的,现在已在 GitHub 上发布:github.com/xisberto/phonetodesktop
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2021-02-25
    • 2011-06-13
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多