【问题标题】:How to retrieve a list of the current user's blogs using Blogger API?如何使用 Blogger API 检索当前用户的博客列表?
【发布时间】:2016-12-22 20:59:27
【问题描述】:

我目前正在尝试使用 Blogger API 在 Android 中获取用户博客列表,具体而言,当前用户的博客。我使用本教程 Authorizing Google for REST APIs 中的方法将 OAuth2 令牌与登录的帐户相关联。

Blogger API 文档说我可以使用https://www.googleapis.com/blogger/v3/users/userId/blogs 请求获取列表 ,并且如果提供 OAuth2 令牌作为授权标头,我可以将 userID 替换为 self,如下所述:

获取https://www.googleapis.com/blogger/v3/users/self/blogs

授权:/* 此处为 OAuth 2.0 令牌 */

所以我使用 Volley 创建了一个JsonObjectRequest

    String url = "https://www.googleapis.com/blogger/v3/users/self/blogs";
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            tv.setText("Response is: " + response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Authorization", mToken);
            return headers;
        }
    };
    MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);

MySingleton 类是从Setting Up a Request Queue 复制而来的:

public class MySingleton {
private static MySingleton mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;

private MySingleton(Context context) {
    mCtx = context;
    mRequestQueue = getRequestQueue();

    mImageLoader = new ImageLoader(mRequestQueue,
            new ImageLoader.ImageCache() {
        private final LruCache<String, Bitmap>
                cache = new LruCache<String, Bitmap>(20);

        @Override
        public Bitmap getBitmap(String url) {
            return cache.get(url);
        }

        @Override
        public void putBitmap(String url, Bitmap bitmap) {
            cache.put(url, bitmap);
        }
    });
}

public static synchronized MySingleton getInstance(Context context) {
    if (mInstance == null) {
        mInstance = new MySingleton(context);
    }
    return mInstance;
}

public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        // getApplicationContext() is key, it keeps you from leaking the
        // Activity or BroadcastReceiver if someone passes one in.
        mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
    }
    return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req) {
    getRequestQueue().add(req);
}

public ImageLoader getImageLoader() {
    return mImageLoader;
}
}

执行此代码后,它给了我一个 401 错误,说我没有登录。我做错了什么?

【问题讨论】:

    标签: java android rest google-api blogger


    【解决方案1】:

    我太粗心了。 Authorization 标头格式错误!应该是Bearer *token* 而不仅仅是*token*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多