Facebook开发者平台:传送门
**

Facebook登录

**

## 1.在Facebook开发者平台上新建或登录Facebook账号


2.添加新应用,创建应用成功后,留意上面的应用编号,等会需要用到

3.添加依赖
(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:[4,5)'

4.其他配置
(1)打开您的 /app/res/values/strings.xml 文件。添加如下所示的代码:
APP_ID就是上面提到的应用编号(记得去除中括号)

<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-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="@string/facebook_app_id" /><activityandroid:name="com.facebook.FacebookActivity"android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"android:label="@string/app_name" /><activityandroid: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>

5.将软件包名称与应用的默认类关联
打开关联链接,看到第5点,如图(因为我没有登录,所以不能输入):

PS:散列的获取方式
比较直接的方式,在你的项目输入以下代码,然后运行,查看log,然后复制上去

 //获取密钥散列try {PackageInfo info = getPackageManager().getPackageInfo("com.facebook.samples.hellofacebook",PackageManager.GET_SIGNATURES);for (Signature signature : info.signatures) {MessageDigest md = MessageDigest.getInstance("SHA");md.update(signature.toByteArray());Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));}} catch (PackageManager.NameNotFoundException e) {} catch (NoSuchAlgorithmException e) {}

6.添加登录按钮,打开XML文件:

<com.facebook.login.widget.LoginButtonandroid:id="@+id/login_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="30dp"android:layout_marginBottom="30dp" />

7.注册回调

CallbackManager callbackManager = CallbackManager.Factory.create();loginButton = (LoginButton) findViewById(R.id.login_button);loginButton.setReadPermissions("email");// 在fragment中使用loginButton.setFragment(this);    // 回调loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {@Overridepublic void onSuccess(LoginResult loginResult) {// App code}@Overridepublic void onCancel() {// App code}@Overridepublic void onError(FacebookException exception) {// App code}});

8.最后一步,在 onActivityResult 方法中调用 callbackManager.onActivityResult,通过 callbackManager 将登录结果传递至 LoginManager。

      @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {callbackManager.onActivityResult(requestCode, resultCode, data);super.onActivityResult(requestCode, resultCode, data);}

**

Facebook分享

**
1.添加依赖
build.gradle (Project)下buildscript { repositories {}}添加

mavenCentral()

build.gradle (Module: app)下dependencies{}添加

implementation 'com.facebook.android:facebook-share:[4,5)'

2.添加散列,散列获取参考上面登录的散列获取方式
生成 Android 密钥散列并添加到开发者资料页

3.在 AndroidManifest.xml 中设置 ContentProvider,其中 {APP_ID} 是您的应用编号

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

4.分享链接

ShareLinkContent content = new ShareLinkContent.Builder().setContentUrl(Uri.parse("https://developers.facebook.com")).build();button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//调用分享弹窗ShareDialog.show(MainActivity.this, content);}
});

5.分享图片

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();
SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

6.分享视频

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder().setLocalUrl(videoUrl).build();
ShareVideoContent content = new ShareVideoContent.Builder().setVideo(video).build();

7.多媒体

SharePhoto sharePhoto1 = new SharePhoto.Builder().setBitmap(...).build();
SharePhoto sharePhoto2 = new SharePhoto.Builder().setBitmap(...).build();
ShareVideo shareVideo1 = new ShareVideo.Builder().setLocalUrl(...).build();
ShareVideo shareVideo2 = new ShareVideo.Builder().setLocalUrl(...).build();ShareContent shareContent = new ShareMediaContent.Builder().addMedium(sharePhoto1).addMedium(sharePhoto2).addMedium(shareVideo1).addMedium(shareVideo2).build();ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

其他更加丰富的用法可参考Facebook分享文档:https://developers.facebook.com/docs/sharing/android

ins分享

ins分享不需要添加SDK,但是目前只能分享drawable下图片,网络图片分享会出现无法加载图片的Toast

Uri file = Uri.parse("android.resource://com.example.newfacebook/"+R.drawable.aaa);btn_ins.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);shareIntent.setType("image/*");shareIntent.putExtra(Intent.EXTRA_STREAM,file);shareIntent.putExtra(Intent.EXTRA_TITLE, "YOUR TEXT HERE");shareIntent.setPackage("com.instagram.android");startActivity(shareIntent);}});

Android Facebook登录、分享;ins分享相关推荐

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

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

  2. qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ

    社交登录授权,分享SDK 支持微信.微博.QQ登录授权 微信好友.微信朋友圈.微博.QQ好友.QQ空间分享 Gradlecompile 'com.elbbbird.android:socialsdk: ...

  3. android 微博分享需要测试账号密码,Android社交登录授权、分享SDK,支持微信、微博和QQ...

    社交登录授权,分享SDK 支持微信.微博.QQ登录授权 微信好友.微信朋友圈.微博.QQ好友.QQ空间分享 Gradle compile 'com.elbbbird.android:socialsdk ...

  4. Android Facebook登录,进来看就对了

    Facebook登录 一.目录 一.开始配置 Facebook Developers面板创建应用和基本配置 集成Facebook SDK 或者 使用依赖配置(二选一即可) 编辑资源和清单 开发秘钥散列 ...

  5. Android FaceBook登录问题记录

    虽然按照官方文档 Facebook 登录 一步一步集成,但测试的时候还是遇到了问题,在这里记录一下.希望给其他出现相同问题的朋友一些借鉴. 问题1 提示没有权限,该账号不是测试账号 解决 在你申请的应 ...

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

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

  7. Android FaceBook登录接入--散列密钥获取

    官方提供的方法如下: /*** 根据签名文件获取散列密钥* 注意: 如果debug和release签名文件不一致,需要重新生成配置到Facebook*/public static String get ...

  8. Android Facebook登录的简单实现

    1.下载sdk并在facebook开发者平台配置 https://developers.facebook.com/docs/android?locale=zh_CN 2.主要功能代码的实现: priv ...

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

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

  10. Android facebook VK 登录与分享 开源SDK

    自己封好的SDK 直接调用 就可以登录 包含facebook VK 登录分享 首先导入SDK 在项目gradle 添加FB,VK的引用 如果你不需要修改源码 直接导入arr文件 比较方便 reposi ...

最新文章

  1. [BI项目记]-TFS Express备份和恢复
  2. XML Schema用法
  3. select sqlite 唯一_SQLite中的SELECT子句使用通配符
  4. 微信分享JSSDK-invalid signature签名错误的解决方案
  5. scale Database
  6. spring项目使用redis分布式锁解决重复提交问题
  7. TCP四次握手释放连接
  8. 【随笔】About QWERTY
  9. chrome控制台如何把vw显示成px_【CSS】679 rem,em,px的区别和使用场景
  10. 在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)
  11. 海量数据挖掘MMDS week5: 聚类clustering
  12. android aysncTask面试解析
  13. 皮尔逊/斯皮尔曼相关系数
  14. 博弈论数据可用性声明_手机数据恢复,低调使用~
  15. 服务器布线属于搬迁项目吗,弱电机房服务器搬迁建设整体规划与合理布局
  16. xp计算机启动检测硬盘,取消WinXP开机自检技巧五则
  17. Qt:操作系统注册表
  18. 【转载】office2021
  19. 三星全新的AI 芯片投入生产,业界首创深度学习处理能力
  20. html属于非结构化数据吗,什么是结构化数据非结构化数据和半结构化数据

热门文章

  1. android 随身无线网卡,让小锐WiFi支持USB无线网卡/随身WiFi(附各种“随身wifi”芯片型号)...
  2. opencv中对图片阀值的操作
  3. linux服务器离线安装python第三方库
  4. PSPNet | 语义分割及场景分析
  5. pscc2019滤镜抽出_「PS-CC2019新版教程」魔棒工具,让你一秒钟完成抠图-基础篇
  6. Python实现SPGD(SGD)优化算法
  7. 边界值法中的上点、内点和离点分析
  8. nnie yolov3 svp
  9. MATLAB数字水印系统
  10. DHCPV6 配置实验