cocos2dx 3.17海外sdk接入填坑全纪录 Facebook SDK 接入(2)

Facebook SDK 采用Android 原生的接入方式,主要是为了获取facebook账户信息,将facebook的token作为主键,在后续Google Firebase同步中使用。

facebook login sdk的接入文档  (需要科学上网)

https://developers.facebook.com/docs/facebook-login/android?sdk=maven

facebook Android API 文档

https://developers.facebook.com/docs/reference/android

 

1:首先在 proj.android/app 目录下的build.gradle 中 添加需要的facebook 库, 注意同步gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':libcocos2dx')

    //facebook start
    compile 'com.facebook.android:facebook-login:[4,5)'
    //facebook end
}

2:在主AndroidManifest中添加,这里注意,只添加一行 android:name="com.facebook.FacebookActivity",不然在Android 8.0 sdk的手机上会Crash,因为在facebook登录时,Activity是透明的,不能设置Activity的方向,一定记住!!!。

<!--facebook-->
<activity
    android:name="com.facebook.FacebookActivity"
    />

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="facebook_app_id"/>

<!--facebook-->

3:在 res/values/string.xml 中 添加你申请的id

<string name="facebook_app_id" translatable="false">1231232131</string>
<string name="fb_login_protocol_scheme" translatable="false">fb1231232131</string>

4:在AppActivity 中 添加facebook 登录接口, 采用Handler Message 的方式 防止cocos的线程崩溃

public static void FBLogin()
{
    Message msg = new Message();
    msg.what = HANDLER_FB_LOGIN;
    handler.sendMessage(msg);
}

public static void FBLogout()
{
    Message msg = new Message();
    msg.what = HANDLER_FB_LOGOUT;
    handler.sendMessage(msg);
}
private void InitCocosListener()
{
    handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case HANDLER_FB_LOGIN:
                {
                    LoginManager.getInstance().logOut();
                    LoginManager.getInstance().logInWithReadPermissions(AppActivity.this, Arrays.asList("public_profile"));

                }
                break;
                case HANDLER_FB_LOGOUT:
                    LoginManager.getInstance().logOut();
                    break;
}
}

5:获取facebook 账户信息,目前facebo只能获取id, name ,token, 其他权限需要后台申请,获取信息后通过JNI传到C++

层做逻辑处理。

private void GetFaceBookUserInfo(final AccessToken accessToken){
      GraphRequest request = GraphRequest.newMeRequest(
              accessToken,
              new GraphRequest.GraphJSONObjectCallback() {
                  @Override
                  public void onCompleted(JSONObject object, GraphResponse response)
                  {

                      try {

                          String id = object.getString("id");
                          String name = object.getString("name");
                          String token = accessToken.getToken();

                      } catch (JSONException e1) {

                          e1.printStackTrace();
                      }

                  }
              });
      Bundle parameters = new Bundle();
      parameters.putString("fields", "id,name,gender,picture,locale");
      request.setParameters(parameters);
      request.executeAsync();
  }

 

最后,facebook 接入完成,其实国外的sdk接入需要比较好的英语能力,cocos3.17的开发c++的话可以基于xCode 或是VS,基于Android的接入 可以通过Android Studio, 调试很方便。

 

 

如有错误,大家可以一起交流

 联系方式 qq: 940299880

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值