繁体   English   中英

Android登录Facebook集成

[英]Android Login facebook integration

我正在使用Eclipse ADT开发应用程序。 我正在尝试登录并在Facebook中获取用户数据。 我可以用Facebook登录,但无法检索用户数据。 在这里我写了一个方法

public void loginFacebook() {
            Log.d("Login Facebooktest Sessions", "loginfb called");
            mPrefs = getActivity().getPreferences(0);
            access_token = mPrefs.getString("access_token", null);
            long expires = mPrefs.getLong("access_expires", 0);

            if (access_token != null) {

                mFacebook.setAccessToken(access_token);
                Log.d("Facebooktest Sessions", "" + mFacebook.isSessionValid());

            }

            if (expires != 0) {
                mFacebook.setAccessExpires(expires);
            }

            if (!mFacebook.isSessionValid()) {
                Log.d("login Facebooktest Sessions",
                        "" + !mFacebook.isSessionValid());
                mFacebook.authorize(getActivity(), new String[] {},
                        new DialogListener() {

                            @Override
                            public void onFacebookError(FacebookError e) {
                                // TODO Auto-generated method stub
                                Log.d("login Facebooktest onFacebookError", "" + e);
                            }

                            @Override
                            public void onError(DialogError e) {
                                // TODO Auto-generated method stub
                                Log.d("login Facebooktest onError ", "" + e);
                            }

                            @Override
                            public void onComplete(Bundle values) {
                                // TODO Auto-generated method stub
                                Log.d("login Facebooktest bundle", "" + values);
                                try {
                                    JSONObject me = new JSONObject(mFacebook
                                            .request("me"));
                                    SharedPreferences.Editor editor = mPrefs.edit();
                                    id = me.getString("id");
                                    name = me.getString("name");
                                    email = me.getString("email");
                                    gender = me.getString("gender");
                                    try {
                                        imageLink = new URL(
                                                "https://graph.facebook.com/" + id
                                                        + "/picture?type=large");
                                        Bitmap bmp = null;
                                        try {
                                            bmp = BitmapFactory
                                                    .decodeStream(imageLink
                                                            .openConnection()
                                                            .getInputStream());
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                            Log.e("facebook complete IO error ", ""
                                                    + e);
                                        }
                                        proPic.setImageBitmap(bmp);
                                    } catch (MalformedURLException e) {
                                        e.printStackTrace();
                                        Log.e("facebook complete image error ", ""
                                                + e);
                                    }
                                    Log.d("facebook.getAccessToken()", "" + id
                                            + mFacebook.getAccessToken());
                                    editor.putString("userid", id);
                                    editor.putString("access_token",
                                            mFacebook.getAccessToken());
                                    editor.putLong("access_expires",
                                            mFacebook.getAccessExpires());
                                    editor.commit();
                                    new getFacebookData(id, name, email, gender)
                                            .execute();

                                    // getProfileInformation();
                                } catch (Exception e) {
                                    // TODO: handle exception
                                    e.printStackTrace();
                                    Log.e("login facebook complete error ", "" + e);
                                }

                            }

                            @Override
                            public void onCancel() {
                                // TODO Auto-generated method stub
                                Log.d("login Facebooktest onCancel", "onCancel");
                            }
                        });

            } else {
                Log.d("login Facebook login method",
                        "" + mFacebook.isSessionValid());
            }
        }

这是方法是否工作到if (!mFacebook.isSessionValid())这个条件条件,我可以得到真实的值,但是我的问题是,onComplete()方法无法工作。 如果它的工作,我做开始新页面的doinbackground操作。 我该如何解决这个问题

提前致谢

使用socialauth-android,简单又快速https://code.google.com/p/socialauth-android/

如果您的id,name,gender ...的值包含在JSON Object中,只需检查您的logcat是否存在NullPointerException如果否,则首先像这样处理

id=me.getString("id")==null ? "":me.getString("id");

要么

if(me.getString("id")==null)
   { 
       id = "";
   }else
   {
      id=me.getString("id");
   }    

再创建一个对话框并将其用于if (!mFacebook.isSessionValid())其他部分:

  else
 {
     facebook.dialog(this, "feed", new DialogListener(){

 @Override
                            public void onComplete(Bundle values) {
                                // TODO Auto-generated method stub
                                Log.d("login Facebooktest bundle", "" + values);
                                try {
                                    JSONObject me = new JSONObject(mFacebook
                                            .request("me"));
                                    SharedPreferences.Editor editor = mPrefs.edit();
                                    id = me.getString("id");
                                    name = me.getString("name");
                                    email = me.getString("email");
                                    gender = me.getString("gender");
                                    try {
                                        imageLink = new URL(
                                                "https://graph.facebook.com/" + id
                                                        + "/picture?type=large");
                                        Bitmap bmp = null;
                                        try {
                                            bmp = BitmapFactory
                                                    .decodeStream(imageLink
                                                            .openConnection()
                                                            .getInputStream());
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                            Log.e("facebook complete IO error ", ""
                                                    + e);
                                        }
                                        proPic.setImageBitmap(bmp);
                                    } catch (MalformedURLException e) {
                                        e.printStackTrace();
                                        Log.e("facebook complete image error ", ""
                                                + e);
                                    }  
 }

 }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM