1

我在一个创建 Google Reader 客户端的 Android 项目中。我使用内置的帐户凭据,并在这一点上与官方的谷歌阅读器应用程序一样接近。

一个星期以来,我一直在为一个问题苦苦挣扎,却不知道如何解决它。我设法使用 authtokentype "reader" 从 AccountManager 获取 Auth Token。令牌的形式是

DQAAAOcAAACJAmAkHEpPnaP-v7HxPYyz3XtCNwTiFLUsqYXfLQvCko4AqUyY213U81fXeNZC3VVArBaEsJJFcRXDmczrEhDquxiJiWSp7eM9T8Bs2VV3uqFwE7irrfarKyBH-oVn2nZxKc3wcugqa7k3p4KCotz48cQRslDQhSZj1AK4hxqO2eu5X8lutffRCPjA6kmgmXhkYA4RuTCxVXbZr0E_ytQteX2VzOlPbqrZ7QD7NiqbeJYODE3pk4BNjHTWtgXAr3J0U7LMdtRh9aC9AJoBp1SNl3jptyzqFfeEjWtVTBQlKtn40vyzMDt0sZoSIaSPquc

现在我有了令牌,如何使用非官方的 Google Reader api 登录?我知道这个java api,并在这里这里这里找到了各种文档。所有这些都只强调客户使用电子邮件和密码登录。每次我找到一个代码示例时,它的形式都是

token = someFunctionIAlreadyUse();
someUndocumentedUnknowPersonalFunction(token);

我错过了一个简单的方法吗?如果没有,我在哪里可以找到访问 api(在 java 中)的详细方法?

4

1 回答 1

0

只是想知道怎么做。android给出的token与常规google reader认证中使用的token相同。以下是 Christian Dadswell 使用 Jsoup 编写的一些代码,并经过修改以与 Android authtoken 一起使用:

public static String getGoogleToken(String authKey) throws UnsupportedEncodingException, IOException
{
    Document doc = Jsoup.connect(_TOKEN_URL).header("Authorization", _AUTHPARAMS + authKey).userAgent(_USER_AGENT).timeout(4000).get();

    // RETRIEVES THE RESPONSE TOKEN
    String _TOKEN = doc.body().text();
    return _TOKEN;
}

public static String getUserInfo(String authKey) throws UnsupportedEncodingException, IOException
{
    Document doc = Jsoup.connect(_USER_INFO_URL).header("Authorization", _AUTHPARAMS + authKey).userAgent(_USER_AGENT).timeout(4000).get();

    // RETRIEVES THE RESPONSE USERINFO
    String _USERINFO = doc.body().text();
    return _USERINFO;
}

和常数:

private static String _USER_AGENT = "YourAppNameHere";

private static final String _AUTHPARAMS = "GoogleLogin auth=";
private static final String _GOOGLE_LOGIN_URL = "https://www.google.com/accounts/ClientLogin";
private static final String _READER_BASE_URL = "http://www.google.com/reader/";
private static final String _API_URL = _READER_BASE_URL + "api/0/";
private static final String _TOKEN_URL = _API_URL + "token";
private static final String _USER_INFO_URL = _API_URL + "user-info";
private static final String _USER_LABEL = "user/-/label/";
private static final String _TAG_LIST_URL = _API_URL + "tag/list";
private static final String _EDIT_TAG_URL = _API_URL + "tag/edit";
private static final String _RENAME_TAG_URL = _API_URL + "rename-tag";
private static final String _DISABLE_TAG_URL = _API_URL + "disable-tag";
private static final String _SUBSCRIPTION_URL = _API_URL + "subscription/edit";
private static final String _SUBSCRIPTION_LIST_URL = _API_URL + "subscription/list";
于 2013-01-01T12:26:47.617 回答