Android 集成facebook 登录和分享

,开场白给大脸书

导入SDK
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.15.0'

app_id在string文件中定义好

<string name="facebook_app_id">[APP_ID]</string>
<string name="fb_login_protocol_scheme">fb[APP_ID]</string>

在清单文件的配置:

<application android:label="@string/app_name" ...>;
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" 
        android:value="@string/facebook_app_id"/>
    ...
    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
</application>

接下来就可以写了

登录按钮 fb 中的sdk里自带了一个按钮,如下:


<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

它的样式是下面这种
这里写图片描述

当然你也可以自己定义,但是还是要调用原按钮的回调,你可以像我这样写(当然可以选择无视,跳过):

//这是自定义的点击框,
bindFacebook = ((RelativeLayout) findViewById(R.id.bindFacebook));
        callbackManager = CallbackManager.Factory.create();
        //这是new了一个facebook原带的按钮(没有写在xml中)
        fcLogin = new LoginButton(MyInfoActivity.this);
        fcLogin.setReadPermissions(Arrays.asList("public_profile", "email"));
        //自定义控件的点击事件
        bindFacebook.setOnClickListener(new OnClickListener() {
            @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
            @Override
            public void onClick(View v) {
                if (!isBind){
                //调用faceb原按钮的点击事件(要求api 最低15(应该是4.0.3吧,差不多)),这样你就可以为所欲为的把按钮调成你喜欢的样子,
                    fcLogin.callOnClick();
                }
            }
        });

为按钮注册回调:
CallbackManager callbackManager;

//
callbackManager = CallbackManager.Factory.create();
LoginButton fcLogin = (LoginButton) findViewById(R.id.login_button);
        //申请读取用户facebook账户一些信息,
        fcLogin.setReadPermissions(Arrays.asList("public_profile", "email"));
        fcLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
            //成功登录
//              UIHelper.shoToastMessage(MyInfoActivity.this, "SUCCESS");
                final AccessToken token = loginResult.getAccessToken();
                if(null != token){
                    GraphRequest request = GraphRequest.newMeRequest(
                            token,
                            new GraphRequest.GraphJSONObjectCallback() {

                                @Override
                                public void onCompleted(JSONObject object, GraphResponse response) {

                                    //object包含了facebook用户的信息,比如id,用户名,
                                    //可以绑定处理,也可以其他处理
                                    //
                                }
                            });


                }

            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException exception) {
                exception.printStackTrace();
            }
        }); 

//必须调用下面的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}  

关于翻墙的工具,推荐一个,是个浏览器的插件,国外的, 叫Tunnello ,每天有200M的流量免费试用,不限期限,像只干浏览网页这种还是不错的,
就不贴地址了,大家自行百度,不需要翻墙哦

关于facebook的分享 请看下一篇文章:

http://blog.csdn.net/sinat_35670989/article/details/77096259

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值