New Facebook SDK and OAuthException in Graphpath requests

断了今生、忘了曾经 提交于 2019-11-29 15:44:49

问题


I saw a buch of answers regarding this problem with the older versions of the SDK, and I can't seem figure out why this is happening to me.

if I use this code, it works perfectly:

String QUERY = "select uid, name, pic_square, is_app_user from user where uid in (select uid2 from friend where uid1 = me())";
protected void getFacbookFirends() {
    Bundle params = new Bundle();
    params.putString("q", QUERY);
    final Request req = new Request(getSession(), "/fql", params, HttpMethod.GET, fbCallback);

    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            Request.executeBatchAsync(req);
        }
    });
}

but this is very ugly, so I tried using this instead:

Session session = Session.getActiveSession();
if (session == null) {
    session = new Session(getActivity());
}
if (session != null && session.isOpened()) {
    Request req = Request.newGraphPathRequest(session, "/me/friends?fields=id,name,installed,picture",
            new Callback() {
                @Override
                public void onCompleted(Response response) {
                            Log.w("FriendsListFragment.Facebook.onComplete", response.toString());
                }
            });
    Request.executeBatchAsync(req);
}

to my understanding, this is the exact same request and should run just the same way, but instead of getting the response I wanted, I get this Response object:

{Response:  
responseCode: 400, 
graphObject: null, 
error: {FacebookServiceErrorException: 
    httpResponseCode: 400, 
    facebookErrorCode: 2500, 
    facebookErrorType: OAuthException, 
    message: An active access token must be used to query information about the current user.
    }, 
isFromCache:false
}

any thoughts about how I can make this work nicely?

EDIT:

I tried running this code and still got the same result:

Request req = new Request(session, "/me/friends?fields=id,name,installed,picture",null, HttpMethod.GET,
        new Callback() {

            @Override
            public void onCompleted(Response response) {
                        Log.w("FriendsListFragment.Facebook.onComplete", response.toString());
            }
        });
Request.executeBatchAsync(req);

回答1:


Request req = new Request(session, "/me/friends?fields=id,name,installed,picture",null, HttpMethod.GET, .......

Don't put the entire path in the graph path parameter, everything after the ? should be in the params parameter that you set to null. Try this instead:

Bundle params = new Bundle();
params.putString("fields", "id,name,installed,picture");
Request req = new Request(session, "me/friends", params, HttpMethod.GET, .......

That will do the trick.



来源:https://stackoverflow.com/questions/13900208/new-facebook-sdk-and-oauthexception-in-graphpath-requests

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!