Android 集成FaceBook实现第三方登陆
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 集成FaceBook实现第三方登陆相关的知识,希望对你有一定的参考价值。
一,必要准备:
上面是官方英文文档,下面详细解释一下:
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>
有问题下方评论留言给我。