ic class FaceBookLogin {
29
30 private Activity activity ;
31 private CallbackManager callbackManager ;
32 private FacebookListener facebookListener ;
33 private List<String> permissions = Collections.<String>emptyList();
34 private LoginManager loginManager;
35
36 public FaceBookLogin( Activity activity ){
37 this.activity = activity ;
38
39 //初始化facebook登录服务
40 callbackManager = CallbackManager.Factory.create() ;
41 getLoginManager().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
42 @Override
43 public void onSuccess(LoginResult loginResult) {
44 // login success
45 AccessToken accessToken = loginResult.getAccessToken();
46 getLoginInfo(accessToken);
47 }
48
49 @Override
50 public void onCancel() {
51 //取消登录
52 }
53
54 @Override
55 public void onError(FacebookException error) {
56 //登录出错
57 }
58 });
59
60 permissions = Arrays
61 .asList("email", "user_likes", "user_status", "user_photos", "user_birthday", "public_profile", "user_friends") ;
62 }
63
64 /**
65 * 登录
66 */
67 public void login(){
68 getLoginManager().logInWithReadPermissions(
69 activity, permissions);
70 }
71
72 /**
73 * 退出
74 */
75 public void logout(){
76 String logout = activity.getResources().getString(
77 com.facebook.R.string.com_facebook_loginview_log_out_action);
78 String cancel = activity.getResources().getString(
79 com.facebook.R.string.com_facebook_loginview_cancel_action);
80 String message;
81 Profile profile = Profile.getCurrentProfile();
82 if (profile != null && profile.getName() != null) {
83 message = String.format(
84 activity.getResources().getString(
85 com.facebook.R.string.com_facebook_loginview_logged_in_as),
86 profile.getName());
87 } else {
88 message = activity.getResources().getString(
89 com.facebook.R.string.com_facebook_loginview_logged_in_using_facebook);
90 }
91 AlertDialog.Builder builder = new AlertDialog.Builder(activity);
92 builder.setMessage(message)
93 .setCancelable(true)
94 .setPositiveButton(logout, new DialogInterface.OnClickListener() {
95 public void onClick(DialogInterface dialog, int which) {
96 getLoginManager().logOut();
97 }
98 })
99 .setNegativeButton(cancel, null);
100 builder.create().show();
101 }
102
103 /**
104 * 获取登录信息
105 * @param accessToken
106 */
107 public void getLoginInfo( AccessToken accessToken ){
108 GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
109 @Override
110 public void onCompleted(JSONObject object, GraphResponse response) {
111 if (object != null) {
112 String id = object.optString("id"); //比如:1565455221565
113 String name = object.optString("name"); //比如:Zhang San
114 String gender = object.optString("gender"); //性别:比如 male (男) female (女)
115 String emali = object.optString("email"); //邮箱:比如:56236545@qq.com
116
117 //获取用户头像
118 JSONObject object_pic = object.optJSONObject("picture");
119 JSONObject object_data = object_pic.optJSONObject("data");
120 String photo = object_data.optString("url");
121 |