在android app中获取facebook用户名

时间:2016-02-12 11:14:27

标签: android facebook

我正在整合facebook登录我的Android应用程序 我已成功从应用程序登录到Facebook,成功后我正在开展一项活动。

private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile();

          //  String fbname = profile.getName();
            //AppLog.Log("name",);
            Intent intent = new Intent(getApplicationContext(), ComputerCategoryActivity.class);
            startActivity(intent);


        } 

现在我要发送facebook个人资料的用户名。为此,如果我从上面的代码中删除评论并试图通过这一行获得它:

String fbname = profile.getName();

我正在登录fb但app没有打开活动所以它进入了onSuccess()方法。请帮助我为什么不能使用Profile.getCurrentProfile();

2 个答案:

答案 0 :(得分:1)

你也应该通过这种方式得到它:

        @Override
        public void onSuccess(LoginResult loginResult) {
            final AccessToken accessToken = loginResult.getAccessToken();
            GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject user, GraphResponse graphResponse) {

                    // user.optString("name"));
                    // user.optString("id"));
                    // user.optString("email"));                        
                }
            }).executeAsync();
        }

要在位图中获取个人资料照片:

public static Bitmap getFacebookProfilePicture(String userID){
    URL imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
    Bitmap bitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());

    return bitmap;
}

答案 1 :(得分:0)

请尝试使用onSuccess方法 -

   final GraphRequest request = GraphRequest.newMeRequest(
                                    loginResult.getAccessToken(),
                                    new GraphRequest.GraphJSONObjectCallback() {
                                        @Override
                                        public void onCompleted(
                                                JSONObject object,
                                                GraphResponse response) {

                                            Log.d("Response", response.getJSONObject().toString());

                                            if (response.getError() != null) {
                                                // handle error
                                                System.out.println("Error from FB ");

                                            } else {
                                                try {

    //                                                JSONObject _jObject = new JSONObject(response.toString());
                                                    if (response.getJSONObject().toString() != null) {                                                    
                                                        if (response.getJSONObject().has("name")) {
                                                            String _facebookName = response.getJSONObject().getString("name");



                                                        }



                                                    }

                                                } catch (Exception e) {
                                                    System.out.println("JSON Error");
                                                    e.printStackTrace();
                                                }


                                            }
                                        }
                                    });