最新消息:文章中包含代码时,请遵守代码高亮规范!

Android 集成FaceBook实现第三方登陆【转载】

Android sunshine 291浏览 0评论

     一,必要准备:

    

  上面是官方英文文档,下面详细解释一下:

Facebook app : 即需要在Facebook Developer平台,创建自己的App,

Facebook SDk:  添加Facebook SDK到自己的项目中,

Facebook App ID:  需要得到在Facebook Developer平台创建的App 的ID.

Android Key Hash:  得到Android Hash Key.

Facebook Activity:  将FaceBook Activity包含在你的项目AndroidManifest.xml文件中.

 

集成Facebook 第三方登陆,需要以上五个必要条件,下面详细说明,如何获得五个条件。

 

一:Facebook App

进入Facebook Developer官方网站:https://developers.facebook.com/  (需要科学上网)

点击右上角My Apps —— Add a new App,

 

选择Android,

输入创建App的name

类别随意选择,点击右下角,“创建应用编号”

创建成功后,会跳转到一个页面,页面最顶部,有显示六个步骤,根据页面提示,慢慢往下,一步步跟着步骤做就可以了。

在”Key Hashes”步骤里,在自己电脑的命令行里,输入响应的命令,会得到一串字符,这个就是Key Hashe了。

比如在linux 系统命令行里,输入:keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64,接着输入密码:android。

至此,Facebook App就创建成功了!

 

二:Facebook SDK(使用Android Studio)

1.添加以下代码至 build.grale (Module:app)

 

repositories {
    mavenCentral()
}

2.将Facebook SDK添加到项目:

仍然是 build.grale(Module:app)文件,在dependencies中,添加下面这一行代码:

"compile 'com.facebook.android:facebook-android-sdk:4.+'

 

三:Facebook App ID

ID在Facebook Developer官网,点击“My Apps,然后选择响应的App,就可以看到App ID了。

将ID添加到项目string.xml文件中,如下:

 

<string name="facebook_app_id">1142428895392515</string>

 

然后在AndroidMainifest.xml文件中配置

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

四:Android Key Hash

上面创建应用的时候,已经得到过了。

五:Facebook Activity

在项目配置文件中,将Facebook Activity包含进去。(我忘了加,结果报:找不到Facebook Activity错误)

 

  六:样例代码

    MainActivity.java

复制代码
package mera.login;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

public class MainActivity extends Activity {
    //    @ViewInject(id = R.id.facebook)
    private LoginButton bt_facebook;
    private CallbackManager mCallbackManager;
    private AccessToken mAccessToken;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //第一行,初始化FacebookSdk,
        FacebookSdk.sdkInitialize(getApplicationContext());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mCallbackManager = CallbackManager.Factory.create();
        //找到login, button
        bt_facebook = (LoginButton) findViewById(R.id.facebook);
        bt_facebook.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.e("abc", "onSuccess");
            }

            @Override
            public void onCancel() {
                Log.e("abc", "onCancel");
            }

            @Override
            public void onError(FacebookException error) {
                Log.e("abc", "onError");
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mCallbackManager.onActivityResult(requestCode,
                resultCode, data);
    }

    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);
    }
}
复制代码

 

activity_main.layout

复制代码
<?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"
    tools:context="mera.login.MainActivity">


    <com.facebook.login.widget.LoginButton
    android:id="@+id/facebook"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    />

</LinearLayout>

最后总结一下:按照步骤来,一步一步照做就可以实现facebook第三方的登陆,就是生成Key Hashe要仔细一点步骤都给了,输错一个就不能生成Key Hashe,另外还可以进入facebook开发者平台找到开发者文档,那里面讲的也是非常之详细,基本照葫芦画瓢就可以实现了。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/24632.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者sunshine的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!