Facebook使用Graph api在Android应用程序中登录

时间:2014-12-29 12:28:05

标签: android facebook facebook-graph-api

任何人都使用Facebook开发者网站提到的代码片段在Android中登录Facebook登录示例代码?我无法正确理解它。我想获取登录用户的姓名和个人资料图片。我想要我的应用程序只要会话处于活动状态就显示名称和个人资料图片,如果用户更改了任何内容,则需要修改详细信息。 目前我所做的是,首次登录时在共享首选项中保存访问令牌和名称,并在每个应用程序启动期间将图像保存在SD卡中并检查访问令牌值。如果访问令牌值不为空,则我显示共享首选项中的名称来自SD卡的个人资料图片。我知道这不是正确的方法。有人请帮帮我。

2 个答案:

答案 0 :(得分:1)

你可以通过这个https://github.com/sromku/android-simple-facebook库很好地定义它,并且可以通过在google上搜索simle facebook android来获取方法的详细信息。用这个库做任何你想用facebook做的事....快乐的编码

答案 1 :(得分:-1)

试试这段代码

public class LoginActivity extends Activity {

private Button butLogin, butMaps, butJackpot, butAdministrator, buttonMenu;
public static String APP_ID = " paste your app_id";
public static Facebook facebook;
private AsyncFacebookRunner mAsyncRunner;
public static SharedPreferences mPrefs;
private static final String TAG = "Activity";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    loginToFacebook();
}           
// Method to call the Facebook login
protected void loginToFacebook() {
    facebook = new Facebook(APP_ID);
    mAsyncRunner = new AsyncFacebookRunner(facebook);
    mPrefs = getSharedPreferences("faceBook", MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);
    if (access_token != null) {
        facebook.setAccessToken(access_token);
    }
    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }
    if (!facebook.isSessionValid()) {
        facebook.authorize(this, new String[] { "email", "public_profile",
                "publish_stream" }, Facebook.FORCE_DIALOG_AUTH,
                new DialogListener() {
                    @Override
                    public void onCancel() {
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        getProfileInformation();
                    }

                    @Override
                    public void onError(DialogError error) {
                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                    }
                });
    } else {
        getProfileInformation();
    }
}

// FaceBook getting profile information
public void getProfileInformation() {
    showLoadingImage();
    Helper.setFacebookLogin(getApplicationContext(), true);
    mAsyncRunner.request("me", new RequestListener() {
        @Override
        public void onComplete(String response, Object state) {
            String json = response;
            try {
                Log.i("JSOB", json);
                JSONObject profile = new JSONObject(json);

                try {
                Bitmap bmp = null;
                    URL image_value = new URL("http://graph.facebook.com/"
                            + profile.getString("id")
                            + "/picture?type=large");
                    bmp =  BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
                    profile_pic.setImageBitmap(bmp);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                String first_name= profile.getString("first_name"));
                String last_name=profile.getString("last_name"));
                String email=profile.getString("email"));


            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onIOException(IOException e, Object state) {
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
        }
    });
   }

    // faceBook login method end

  }