Android 版 Facebook SDK 让用户可以通过“Facebook 登录”注册您的应用。通过 Facebook 登录您的应用时,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在 Facebook 执行操作。
首先您需要注册Facebook个人账户成为开发者,当然你也可以直接注册Facebook开发者账户。
一、集成 Facebook SDK
Android 版 Facebook 登录 SDK 是 Android 版 Facebook SDK 的一个组件。如要在您的项目中使用 Facebook 登录 SDK,请使其成为 Maven 中的一个依赖项,或者将其下载下来。如需在 Android 11 中支持这些更改,请使用 SDK 版本 8.1 或更高版本。
使用 Maven
1、在您的项目中,打开 your_app > Gradle Scripts > build.gradle (Project),确保下列存储库都添加到 buildscript { repositories {}} 中:jcenter() 。
2、在您的项目中,打开 your_app > Gradle Scripts > build.gradle (Module: app) 并将下列执行语句添加到 dependencies{} 部分,以便依赖于最新版的 Facebook 登录 SDK:
implementation ‘com.facebook.android:facebook-login:[8.1)’
3、构建项目,使用 Facebook 登录 SDK 时,如果未禁用事件自动记录功能,那么系统将自动记录和收集应用事件,以用于 Facebook 分析。关于哪些信息会被收集以及如何禁用事件自动记录的详细信息,请参阅应用事件自动记录。
4、编辑您的资源和清单
如果您使用 Android 版 Facebook SDK 版本 5.15 或更高版本,则不需要为 Chrome 自定义选项卡添加活动或意图筛选条件。此功能包含在 SDK 中。
为您的 Facebook 应用编号以及启用 Chrome 自定义选项卡所需的 Facebook 应用编号创建字符串。另外,请将 FacebookActivity 添加到您的 Android 清单文件中。
(1)打开您的 /app/res/values/strings.xml 文件。
(2)添加如下所示的代码:
(3)打开 /app/manifest/AndroidManifest.xml 文件。
(4)在 application 元素后添加以下 uses-permission 元素:
(5)在 application 元素中添加以下 meta-data 元素、一个针对 Facebook 的 activity 元素以及一个针对 Chrome 自定义选项卡的 activity 元素和意向筛选条件:
5、将软件包名称和默认类与应用进行关联
6、为应用提供开发和发布密钥散列
7、为应用启用单点登录
8、添加 Facebook“登录”按钮
向应用添加“Facebook 登录”按钮的最简单方法是从 SDK 添加 LoginButton。LoginButton 是一个界面元素,其中包含 LoginManager 具备的功能。用户点击按钮后,就会以 LoginManager 中设置的权限开始登录。按钮随登录状态变化,并根据用户的身份验证状态显示正确文本。
要添加 Facebook 登录按钮,请先将其添加到布局 XML 文件中:
9、注册回调
现在调用 CallbackManager.Factory.create,创建 callbackManager,以便处理登录响应。
callbackManager = CallbackManager.Factory.create();
如果您将按钮添加到 Fragment(片段),则您还必须更新 activity(活动),以使用此 Fragment。您可以自定义 Login button 的属性,并在 onCreate() 或 onCreateView() 方法中注册一个回调。您可以自定义的属性包括 LoginBehavior、DefaultAudience、ToolTipPopup.Style 以及 LoginButton 的相关权限。例如:
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(“email”);
// If using in a fragment
loginButton.setFragment(this);
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
为了响应登录结果,您需要使用 LoginManager 或 LoginButton 注册回调。如果您使用 LoginButton 注册回调,就不需要在登录管理器中注册回调。
将 LoginManager 回调添加到 activity 或 fragment 的 onCreate() 方法:
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
如果登录成功,LoginResult 参数将拥有新的 AccessToken 及最新授予或拒绝的权限。
您不需要 registerCallback 来保证登录成功,可以选择使用下述 AccessTokenTracker 类跟踪当前访问口令的更改。
最后,在 onActivityResult 方法中调用 callbackManager.onActivityResult,通过 callbackManager 将登录结果传递至 LoginManager。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
您集成到 FacebookSDK 登录或分享功能的所有活动和片段都应将 onActivityResult 转发到 callbackManager。
10、检查登录状态
您的应用一次只能登录一个用户,LoginManager 会为该用户设置当前的 AccessToken 和 Profile。FacebookSDK 会将该数据保存在共享首选项中,并在会话开始时设置此数据。您可以通过检查 AccessToken.getCurrentAccessToken() 和 Profile.getCurrentProfile() 来查看用户是否已登录。
您可以通过 SDK 从缓存或应用书签中(如果应用冷启动)加载 AccessToken.getCurrentAccessToken。您应在 Activity 的 onCreate 方法中检查它的有效性:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
稍后您可以执行实际登录,例如在自定义按钮的 OnClickListener 中:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList(“public_profile”));
1、启用快捷登录
快捷登录功能可帮助用户使用 Facebook 帐户跨设备和平台登录您的应用。如果用户在 Android 设备上登录过应用,然后更换了设备,快捷登录功能可帮助他们使用 Facebook 帐户登录,而不会让他们选择登录方式。这样可以避免创建重复帐户或完全无法登录。如需在 Android 11 中支持这些更改,请将以下代码添加到 /app/manifest/AndroidManifest.xml 文件的 queries 元素中。
下列代码展示了如何启用快捷登录。
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // “Logged in as
恭喜,您已成功向 Android 应用添加了 Facebook 登录功能!请务必查看我们的其他文档页面,获取更多进阶指南。
执行数据删除回调
执行数据删除回调,以响应用户从 Facebook 删除数据的请求。
访问口令和个人主页
追踪用户的访问口令和个人主页。
权限
控制您的应用有权通过 Facebook 登录功能访问哪些数据。
问题解决
集成 Facebook 登录功能时遇到问题?请参阅常见问题列表及问题解决方法。
应用审核
根据您向使用 Facebook 登录的用户请求的 Facebook 数据,您可能需要在发布前提交应用以供审核。
官方Android Facebook SDK下载:
本文飞鱼出海为原创文章,版权归飞鱼出海作者所有,如若转载请注明文章出处:飞鱼出海