1,配置build.gradle

项目级别的gradle:

repositories {    mavenCentral()}

app级别的gradle:

dependencies {implementation 'com.facebook.android:facebook-android-sdk:[5,6)'}

2,配置string文件

打开strings.xml文件,添加一个名字为facebook_app_id的新字段,值就是你后台得到的Facebook App ID:

61246242287XXXX

3,配置AndroidManifest.xml

xxx为Facebook的appid

4,facebook后台配置

需要包名、mainActivity、密钥散列

密钥散列需要是通过keytool 和 openssl 共同生成。

keytool是JDK里的一个工具,装了JDK并配置好环境变量的就可以使用这个 keytool 命令,但是难点在于这个 openssl 命令,需要单独安装 openssl,并且安装配置还挺麻烦。具体可以参考这篇文章,写的还是不错的,不仅有详细的步骤,还有出现的错误处理。

https://www.cnblogs.com/ZhouL3777/archive/2012/10/21/2732890.html

我本地使用的openssl压缩包也放在这:

链接:https://pan.baidu.com/s/10o714bCWPQRThZVeAWfnwg 
提取码:uwhq

5,获取密钥散列:

我是windows系统,主要是在cmd中运行:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

YOUR_RELEASE_KEY_ALIAS -----替换您的发布密钥别名(应用级别的build.gradle里的 KeyAlias~)

YOUR_RELEASE_KEY_PATH  -----替换为您的 keystore 路径(jks文件)

openssl -----openssl.exe 的路径代(C:\......\openssl.exe)

 

 

6,分享的主要代码

如果机器没有安装Facebook客户端的话,会自动调用H5登录Facebook的页面

private var callbackManager: CallbackManager? = null
private fun sharedToFace() {        callbackManager = CallbackManager.Factory.create()        val shareDialog = ShareDialog(this)        shareDialog.registerCallback(callbackManager, object : FacebookCallback {            override fun onSuccess(result: Sharer.Result?) {                OToastProUtils.toastShort(“分享成功”)            }            override fun onCancel() {                OToastProUtils.toastShort(“取消分享”)            }            override fun onError(error: FacebookException?) {                OToastProUtils.toastShort(“分享失败”)            }        })        if (ShareDialog.canShow(ShareLinkContent::class.java)) {               //连接分享,指向Google play            val linkContent = ShareLinkContent.Builder()//                .setContentTitle("下载One Hope,免费领取借款额度")//                .setContentDescription("这款App可以免费申请贷款了,不仅额度大,还能分期还款,快来下载吧")                .setContentUrl(                    Uri.parse("https://play.google.com/store/apps/details?id=" + context?.getPackageName())                )                .build()            shareDialog.show(linkContent)            //分享图片//            val bitmap = BitmapFactory.decodeResource(resources, R.mipmap.hongbproao_nodataop, null)//            var mSharePhoto = SharePhoto.Builder()//                .setCaption("Test share")//                .setBitmap(bitmap)//                .build()////            var mContent = SharePhotoContent.Builder().addPhoto(mSharePhoto).build()//            shareDialog.show(mContent)//            if (bitmap != null && !bitmap.isRecycled()) {//                bitmap.recycle()//            }            //分享视频//            var videoFileUri = ...//           var ShareVideo =  ShareVideo.Builder()//                .setLocalUrl(videoUrl)//                .build()//            var content = ShareVideoContent.Builder()//                .setVideo(ShareVideo)//                .build()//////            //分享多媒体//            var sharePhoto1 = SharePhoto.Builder()//                .setBitmap(...)//                .build()//            var sharePhoto2 = SharePhoto.Builder()//                .setBitmap(...)//                .build()//            var shareVideo1 = ShareVideo.Builder()//                .setLocalUrl(...)//                .build()//            var shareVideo2 = ShareVideo.Builder()//                .setLocalUrl(...)//                .build()////             var shareContent =  ShareMediaContent.Builder()//                .addMedium(sharePhoto1)//                .addMedium(sharePhoto2)//                .addMedium(shareVideo1)//                .addMedium(shareVideo2)//                .build()        } else {            OToastProUtils.toastShort(“未安装Facebook”)        }    }

 

 

 

/** * 分享成功执行回调 */override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {    super.onActivityResult(requestCode, resultCode, data)    //这里执行了下面的方法,会调用shareDialog.registerCallback~~~    callbackManager?.onActivityResult(requestCode, resultCode, data)}

这里我的疑问是:我既想分享链接又希望有标题和文字描述,但是会链接起作用,title和description,调用的Facebook的时候都不会显示,有两全其美的方法嘛?~~

 

效果:

(这个弹框是自己写的,只是点击Facebook的时候调用上面的分享方法)

 

(点击分享链接Facebook页面)

 

更多相关文章

  1. Android(安卓)Studio,gradle project sync failed 错误
  2. Android(安卓)4.2蓝牙介绍 Android(安卓)4.4.2 bluetooth解析(一)
  3. 使用googleMap 需要获取的apikey方法
  4. ubuntu 上android 源码编译 全过程(二)
  5. android支付宝支付开发过程
  6. AndroidManifest.xml之 manifest element详解
  7. Android(安卓)8.0 - 基于命名空间的动态链接—— 隔离 Android(
  8. Android(安卓)将每三个数字加上逗号处理(通常使用金额方面的编辑)
  9. Android(安卓)Banner图片轮播控件+ViewPagerIndicator+ViewPager

随机推荐

  1. Android调用系统图片裁剪限定尺寸及7.0照
  2. 9.6、Libgdx之罗盘
  3. Android开发:ImageView 设置圆角边框
  4. Android(安卓)MIME
  5. Android(安卓)Sensor框架简述(一)
  6. 用Android的imageVew显示网络和本地的图
  7. android 出现org.apache.http.conn.HttpH
  8. Android(安卓)Studio使用教程(二)
  9. 针对android游戏截图分享
  10. android开发工具简介及下载地址