[置顶] Android集成FaceBook登入《-》

标签: androidfacebook
1224人阅读 评论(0) 收藏 举报
分类:

最近因为买了vpn然后就玩了下facebook,我个人用的是流星加速器,反正网速挺好的,首先是说下登录吧
主要步骤有以下几步遇到很多坑,被那个key hash玩得不要不要的,我去,但是有古语说的好,坚持才能取得最后的胜利!哈哈!
首先说下添加在build.gradle中依赖代码如下

compile 'com.facebook.android:facebook-android-sdk:[4,5)'

然后再Project Structure 可以看到添加的facebook.jar

这里写图片描述

首先看下战国其实也不难主要把文档花几分钟就可以了!快速入门
这里写图片描述
注册直接进入

FaceBook官网

然后登录之后输入您的账号和密码如下图所示
这里写图片描述

输入完之后就可以看到对该应用授权如下图
这里写图片描述

最后就可以看到已经登录成功了取消就关闭当前对话,否则注销当前用户
这里写图片描述

到这里实现功能说完了,下面说下步骤
1、首先注册登录然后创建自己的应用程式然后会成一个编号
这里写图片描述


> Add Facebook SDK to Your Project To use Facebook SDK in a project, add
> it as a build dependency and import it. If you are starting a new
> project, follow all the steps below. To add Facebook SDK to an
> existing project, start with step 3.
> 1. Go to Android Studio | New Project | Minimum SDK
> 2. Select "API 15: Android 4.0.3" or higher and create your new project.
> 3. In your project, open your_app | Gradle Scripts | build.gradle
> 4. Add the Maven Central Repository to build.gradle before dependencies: repositories {
>         mavenCentral()
>     }
> 5. Add compile 'com.facebook.android:facebook-android-sdk:[4,5)' to your build.gradle dependencies.
> 6. Build your project.
> 7. Import Facebook SDK into your app: import com.facebook.FacebookSdk; Add Facebook App ID Add your Facebook App ID to your app and update
> your Android manifest.
> 1. Open your strings.xml file, for example: /app/src/main/res/values/strings.xml.
> 2. Add a new string with the name facebook_app_id containing the value of your Facebook App ID: <string
> name="facebook_app_id">860026030806612</string>
> 3. Open AndroidManifest.xml.
> 4. Add a uses-permission element to the manifest: <uses-permission android:name="android.permission.INTERNET"/>
> 5. Add a meta-data element to the application element: <application android:label="@string/app_name" ...>
>     ...
>     <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
>     ... </application>

需要注意的是您的包名以及主Activity的完整类名这里是我仅供参考
这里写图片描述

下面贴完整代码MainActivity
首先是sdk初始化

 //初始化facebook sdk FacebookSdk.sdkInitialize(getApplicationContext());

如果没有安装FaceBook要求安装apk文件代码

  // Add code to print out the key hash
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.facebook.samples.hellofacebook",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

            setContentView(R.layout.activity_main);
        mCallBackManager=CallbackManager.Factory.create();
**然后注册登入接口**
  //找到loginbutton
        btn_facebook= (LoginButton) findViewById(R.id.facebook);

        btn_facebook.registerCallback(mCallBackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                //登录成功
                Log.e(TAG,"on Success");
            }

            @Override
            public void onCancel() {
                //取消登录
                Log.e(TAG,"on Cancel");

            }

            @Override
            public void onError(FacebookException error) {
                //登录出错
                Log.e(TAG,"on Error");
            }
        });
    }

接口回调

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
       mCallBackManager.onActivityResult(requestCode,resultCode,data);
//       if(requestCode==FaceBookShareUtils.SHARE_REQUEST_CODE){
//          mCallBackManager.onActivityResult(requestCode,resultCode,data);        }
    }

绑定Token标识

 public void getFaceBookToken(View view) {
        AccessToken mAccessToken = AccessToken.getCurrentAccessToken();
        Log.e("token", "token :" + mAccessToken.getToken() + "," + "user_id" + mAccessToken.getUserId());
    }
@Override
    protected void onResume() {
        super.onResume();
        AppEventsLogger.activateApp(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        AppEventsLogger.deactivateApp(this);
    }

最后给大家看下清单文件AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="zm.facebook.com.facebooktest">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

        <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=".LanguageActivity"></activity>
        <provider android:authorities="com.facebook.app.FacebookContentProvider259759727729348"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>

    </application>

</manifest>

res/values/strings.xml如下

 <string name="facebook_app_id">860026030806612</string>
    <string name="app_site">https://www.facebook.com/</string>

最后主xml布局文件一个LoginButton如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    android:background="#c99e9e">
    <com.facebook.login.widget.LoginButton
        android:id="@+id/facebook"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        />
</LinearLayout>

最后补充下生产key hash方法 下载完之后解压放到
C:\Program Files\Java\jdk1.7.0_79这里是我的目录改成您自己的就ok!另外需要将下载之后添加到系统环境变量Path中我的如下图所示
这里写图片描述

需要下载
这里写图片描述
Mac OX平台

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

W indow平台

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

到这里基本结束了!后期会加入FaceBook分享以及推播广告等,请打击敬请期待,另外本人群号点击链接加入群【疯狂Android进阶之旅】:https://jq.qq.com/?_wv=1027&k=43IeSRc欢迎新老司机加入哈哈!随意开车!

最后补充key hash签名工具

2
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:274706次
    • 积分:4318
    • 等级:
    • 排名:第7272名
    • 原创:157篇
    • 转载:21篇
    • 译文:0篇
    • 评论:183条
    博客专栏
    最新评论
    欢迎加入QQ群