因上周公司在做海外项目,需要接入facebook,目前完成了登陆接入,现在写出来,方便大家。

1.FaceBook开发者设置:
https://developers.facebook.com/docs/facebook-login/android/

网址需要翻,所以先做好准备。里面有两种方式,我用的Maven方式。

2.使用 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:[5,6)'

3.构建项目。

3.编辑您的资源和清单
1.打开您的 /app/res/values/strings.xml 文件。
添加如下所示的代码:

<string name="facebook_app_id">[APP_ID]</string> <string name="fb_login_protocol_scheme">fb[APP_ID]</string>

2打开 /app/manifest/AndroidManifest.xml 文件。
在 application 元素后添加以下 uses-permission 元素:

  <uses-permission android:name="android.permission.INTERNET"/>

3.在 application 元素中添加以下 meta-data 元素、一个针对 Facebook 的 activity 元素以及一个针对 Chrome 自定义选项卡的 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="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="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>

4.软件包名称和默认类与应用进行关联,为应用提供开发和发布密钥散列,为应用启用单点登录
这些自己在上面开发者里面设置。

5.代码部分

package org.cocos2dx.cpp_empty_test;

import android.app.Activity;
import android.content.Intent;
import android.util.Log;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;

import java.util.Arrays;

public class facebookLogin  {
    private CallbackManager fbCallback;
    private static Activity mActivity;


    protected void onCreate(Activity activity) {
        mActivity = activity;
        fbCallback = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(fbCallback,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        // App code
                        String token = loginResult.getAccessToken().getToken();

                    }

                    @Override
                    public void onCancel() {
                        // App code

                    }

                    @Override
                    public void onError(FacebookException exception) {
                        // App code

                    }
                });
    }


    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        fbCallback.onActivityResult(requestCode, resultCode, data);
    }

    public static void facebookLogin(){
        LoginManager.getInstance().logInWithReadPermissions(mActivity, Arrays.asList("public_profile"));
    }
}

以上是登陆的基本功能,自己放假做了个demo,后续接入google登陆或支付,也会分享。

本文地址:https://blog.csdn.net/weixin_42495311/article/details/107432558