第一次做海外项目,遇到需求,需要接入Facebook登录与分享。

只说遇到的麻烦,1、登录,「网址发不了……」

首先,创建应用,这里需要注意,创建完应用后,要按需开放部分权限,否则无法唤起应用,

另外,测试程序的时候还需要测试账号,在控制台「Rotes」下添加

添加账号后,点击账号后方的「Edit」可以修改该账号的name跟password,一般只修改password就好,方便登录操作,接下来就是三方sdk的接入,「Facebook Login」-->「Quickstart」 ,按照介绍一步步进行就好,可能「Key Hashes」的获取稍微麻烦一点,可以直接将生成代码拽到项目里,生成Hashes码,填入即可,

@SuppressLint("NewApi")private fun getKeyHashValue() {try {val info = packageManager.getPackageInfo("com.abc.xyz",PackageManager.GET_SIGNATURES)for (signature in info.signatures) {val md = MessageDigest.getInstance("SHA")md.update(signature.toByteArray())Log.e("KeyHash:", Base64.getEncoder().encodeToString(md.digest()))
//                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT))}} catch (e: PackageManager.NameNotFoundException) {Log.d("KeyHash:", e.toString())} catch (e: NoSuchAlgorithmException) {Log.d("KeyHash:", e.toString())}}

代码方面设置结束,就剩下调试了,国内测试环境不太好,我们测试登录是需要facebook 应用的,如果大家无法登录google商店下载应用,就各显神通,到各大平台,网站搜索应用吧,只是假包可能不少,官方提供的登录功能有两种,一种是设置LoggButton,一种是自定义触发,文档介绍很全了,我这里使用的是自定义,登录方法使用的是

binding.ivAutoFacebook.click {LoginManager.getInstance().logInWithReadPermissions(this, listOf("email", "public_profile"))}

看函数名就是登录并读取参数,生命callbacManager,同时在onActivityResult中使用callbacManager做一下接收,

private fun initFacebookLogin() {LoginManager.getInstance().registerCallback(callbackManager, object : FacebookCallback<LoginResult> {override fun onSuccess(result: LoginResult?) {val userId = result?.accessToken?.userIdif (userId != null) {viewModel.facebookLogin(userId)}}override fun onCancel() {}override fun onError(error: FacebookException?) {error?.message?.toast(this@MineLoginActivity)}})}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode != REQUEST_CODE_SCAN)callbackManager.onActivityResult(requestCode, resultCode, data)       }

登录完结;

2、分享

分享功能同样按照文档很容易接入,不得不说,facebook提供的接入文档还是很傻瓜式的,很大的减少了英文不是很好的我们的操作硬需,

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"android:name="com.facebook.FacebookContentProvider"android:exported="true"/>

这里提一下,将{APP_ID}替换成登录时候生成的id,大括号{}也不留,注意 注意 注意

分享操作使用ShareContent的子类完全够用了,可是有一点,从2.9开始分享图片不再支持携带链接、title跟描述了

/*** @deprecated As of Graph API 2.9 this field is deprecated and may not function as expected.*     Set the contentDescription of the link. For more information, see*     https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations.* @param contentDescription The contentDescription of the link.* @return The builder.*/@Deprecatedpublic Builder setContentDescription(@Nullable final String contentDescription) {Log.w(TAG, "This method does nothing. ContentDescription is deprecated in Graph API 2.9.");return this;}/*** @deprecated As of Graph API 2.9 this field is deprecated and may not function as expected.*     For more information, see*     https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations. Set the*     contentTitle to display for this link.* @param contentTitle The link contentTitle.* @return The builder.*/@Deprecatedpublic Builder setContentTitle(@Nullable final String contentTitle) {Log.w(TAG, "This method does nothing. ContentTitle is deprecated in Graph API 2.9.");return this;}/*** @deprecated As of Graph API 2.9 this field is deprecated and may not function as expected.*     For more information, see*     https://developers.facebook.com/docs/apps/changelog#v2_9_deprecations. Set the URL of a*     picture to attach to this content.* @param imageUrl The network URL of an image.* @return The builder.*/@Deprecatedpublic Builder setImageUrl(@Nullable final Uri imageUrl) {Log.w(TAG, "This method does nothing. ImageUrl is deprecated in Graph API 2.9.");return this;}

这伤的很重,没办法做程序员的为了实现功能,就只能到处去google,可是暴露出来的文章都是,贴了一下官方的方法,没进展,最后我这里只能另辟蹊跷,使用多媒体分享ShareMediaContent添加一个SharePhoto,把链接放一个shareHashTag

return ShareMediaContent.Builder().addMedium(sharePhoto).setShareHashtag(ShareHashtag.Builder().setHashtag(url).build()).build()

本来这个是为了给分享内容增加一个话题的,让我当成分享链接桥梁了,还好功能实现;

当然,如果有哪位找到了分享图片加链接的方法,欢迎留言

Facebook 登录、分享相关推荐

  1. Android 集成原生google,facebook 登录分享sdk

    前言 海外版app集成三方登录分享,早期采用umeng sdk,由于googleplay对用户隐私及用户数据的使用有比较严格规定.正好 umeng sdk会后台采集app信息,触发用户隐私相关政策条款 ...

  2. Android FaceBook登录 分享获取HashKey(密钥散列)的简单方法

    1.代码执行获取密钥散列: try {PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageMa ...

  3. Android 集成facebook 登录和分享

    ,开场白给大脸书 导入SDK dependencies { compile 'com.facebook.android:facebook-android-sdk:4.15.0' app_id在stri ...

  4. facebook、twitter、facebook登录、whatsapp分享、微信分享

    facebook.twitter.facebook 登录.whatsapp 分享.微信分享 几个概念 爬虫 所谓爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. html 元素图谱 对 ...

  5. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

  6. iOS对接Facebook:登录,分享,邀请,游戏排行榜功能

    <div id="article_content" class="article_content">         <div class=& ...

  7. 使用share SDK实现腾讯微博授权登录分享(1.x版本)

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:http://www.sh ...

  8. 有奖试读 使用share SDK实现腾讯微博授权登录分享(1.x版本)

    操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:http://www.shareSDK.cn 2.在腾讯微博平台注册应用生成AppId和AppKey    网址:h ...

  9. 使用share SDK实现新浪微博授权登录分享(1.x版本)

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:http://www.sh ...

最新文章

  1. 轨道阱 matlab,赛默飞四极杆-轨道阱液质联用仪核心参数详解
  2. docker安装nginx容器小记
  3. 如何去掉自动弹出IE9介绍页
  4. NUC1090 Goldbach's Conjecture【哥德巴赫猜想 】
  5. jconsole是否可以在生产环境使用_使用JCONSOLE远程监控JVM
  6. 摄影用光、构图基础知识
  7. c# NPOI按模板导出
  8. DongDong数颜色 树状数组,dfs序,统计区间不同数字个数
  9. 计算机系统文件格式,iso是什么文件格式,怎么使用呢?
  10. 天牛须算法(BAS)python实现
  11. flutter app使用大量网络图片导致频繁崩溃
  12. Laravel 使用 Entrust 实现 RBAC
  13. Python爬取自然风景图片代码
  14. React 项目配置 Win10 WSL
  15. Linux 3.10内核锁瓶颈描述以及解决-overlayfs的性能缺陷
  16. 小学教师资格证考试的高分技巧
  17. 速算24点java_24点速算游戏 Java 代码
  18. python中英文古风排版_2017年天梯赛部分真题加Pat部分题目(1)
  19. FDR土壤水分检测传感器设计方案
  20. DC-2渗透靶机详解

热门文章

  1. AIX中 |SMIT/SMITTY| 的使用
  2. pandas处理Excel基本方法
  3. SpringCloud微服务架构实战:微服务治理
  4. 2016年浙江财经大学信工学院程序设计竞赛题解
  5. java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述
  6. 积极推进计算机管理台账,建台账促规范管理提升党建工作水平
  7. Java、JSP飞机航班信息查询系统
  8. 在 C# CLR 中学习 C++ 之了解 namespace
  9. 复现笔记--有关极性码的两篇文章
  10. Android资料集合