跳到主要内容

Facebook登录

前置条件

你可以从 创建应用 获取 Facebook APP Id

你可以从 Client Token 获取 Facebook Client Token

添加依赖

在应用级别的 build.gradle 中添加以下代码,并将 $msdk_version 替换为实际的 MSDK 版本。

    dependencies {
implementation "com.garena.sdk.android:login-facebook:$msdk_version"
}

配置

配置 AndroidManifest.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">

...

<!-- Facebook SDK declares this permission(optional permission), but this will block uploading to Google Play if you don't turn on advertising ID on Google Play Console
so you can use tools:node="remove" here to remove this permission -->
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />

<application ...>

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

<meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="[facebook_client_token]" />

<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="[facebook_protocol_scheme]" />
</intent-filter>
</activity>
....
</application>

</manifest>

使用方法

AccountManager accountManager = new AccountManager(activity);
accountManager.login(PlatformType.FACEBOOK, onLoginListener);

覆盖权限

默认情况下需要以下 Facebook 权限:public_profileemailuser_friends

如果你不需要这些权限,可以覆盖默认权限

accountManager.login(new FacebookLoginParams(
Arrays.asList(FacebookPermission.EMAIL, FacebookPermission.PROFILE)), onLoginListener);

获取当前 Facebook access token

当前用户通过 Facebook 登录时,可以获取当前的 Facebook access token。

accountManager.getPlatformAccessToken(PlatformType.FACEBOOK);

覆盖 Facebook Graph API 版本

Facebook 会定期更新并废弃旧的 Graph API 版本。通过以下接口可以升级 Graph API 版本,而无需升级 Garena MSDK。

// build the configurations
MSDKConfigs configs = new MSDKConfigs.Builder()
.setFacebookGraphApiVersion(version)
.build();
MSDK.setConfig(configs);