Facebook

第三方登陆
详细配置请参照网络资源
sdk地址http://pan.baidu.com/s/1bp6xngr
使用方式

1.初始化

callbackManager = CallbackManager.Factory.create();

2.登陆回调

private FacebookCallback<LoginResult> facebookCallback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        facebookUserId = loginResult.getAccessToken().getUserId();
        accessToken = loginResult.getAccessToken();
        //重置按钮状态
        LoginManager.getInstance().logOut();
    }

    @Override
    public void onCancel() {
    }

    @Override
    public void onError(FacebookException e) {
        ToastUtil.showShort(LoginActivity.this, getString(R.string.failed_no_internet));
    }
};

3.获得用户信息

//获得用户信息
loadingDialog.show();
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject jsonObject, GraphResponse response) {
        loadingDialog.hide();
        try {
            if(response.getError()!=null){
                Log.e("error", "onCompleted: " +response.getError().getErrorMessage());
                ToastUtil.showShort(LoginActivity.this, getResources().getString(R.string.fall_to_get_user));
            } else if (response.getConnection().getResponseCode() == 200){
                name = jsonObject.getString("name");
                if (jsonObject.has("gender")){
                    gender = jsonObject.getString("gender").equals("male")?"先生":"小姐";
                }
                if (jsonObject.has("picture")){
                    picture = jsonObject.getJSONObject("picture").getJSONObject("data").getString("url");
                }
                if (jsonObject.has("email")){
                    email = jsonObject.getString("email");
                }
                //做登陆业务逻辑
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,gender,picture,email");
request.setParameters(parameters);
request.executeAsync();

4.loginManager

LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile,email"));//权限
LoginManager.getInstance().registerCallback(callbackManager, facebookCallback);

5.loginButton
具体使用时样式上有限制,故未采用。

6.个人信息的权限说明
登陆授权具有时效性,若拒绝授权之后有反复请求授权,会导致体验差,用户流失。
可获得信息 (默认权限)
id 用户ID
name 全名
first_name 名
last_name 姓
age_range 年龄范围
link 用户连接
gender 性别
locale 语言环境
picture 用户头像图片链接
timezone 时区
updated_time 上次更新时间
verified 是否通过验证
email 邮件地址

其他权限,这权限都需要通过Facebook的审核,同时也需要用户在登录时完成授权,应用才能正常使用这些权限
user_about_me
user_actions.books
user_actions.fitness
user_actions.music
user_actions.news
user_actions.video
user_actions:{app_namespace}
user_birthday
user_education_history
user_events
user_games_activity
user_hometown
user_likes
user_location
user_managed_groups
user_photos
user_posts
user_relationships
user_relationship_details
user_religion_politics
user_tagged_places
user_videos
user_website
user_work_history
read_custom_friendlists
read_insights
read_audience_network_insights
read_page_mailboxes
manage_pages
publish_pages
publish_actions
rsvp_event
pages_show_list
pages_manage_cta
pages_manage_instant_articles
ads_read
ads_management
pages_messaging
pages_messaging_phone_number
Deprecated Permissions
manage_notifications
read_stream
read_mailbox
user_groups
user_status

查询方法
https://graph.facebook.com/106160063145668?fields=id,name,first_name,last_name,link,locale,picture,updated_time,verified&access_token=EAAV1cO8wUd0BACiJhugcVi0illSzHhL5zdPlDoRxexyrZBeen51zt0hzP5C6jfpZCqh2rLRDuNtxgUeoxSz8ENFK6pDkHCoe8ar5vrYFqmFVj1DKVhltu5uL9oDzZCr90KDwYjcQhfcP1mMQZAhPMBHSmoZCkZBnmJ0pAqmJa9djNB8PAe2ZBv1aTuZAjJJyhU0vOId08sabAAZDZD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值