使用友盟分享到facebook总结12.uni

uniapp分享到facebook

由于之前只需要分享到QQ/微信/新浪等,这些直接根据友盟的文档来写就行了。但是分享FaceBook的话有所差别,会碰到林林总总的问题,被狠狠折腾了一番。

原来想从头至尾写完备版的,又一想到自己去百度/谷歌搜索都是这样的文章。底子的工具都是差不多的,着实没什么须要。以是我就写一些我以为很重要的工具吧。

一. 设置Facebook的appKey和UrlString
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Facebook appKey:@"506027402887373" appSecret:nil redirectURL:@"http://www.umeng.com/social"];

这里留意不需要秘钥 Secret ,url填写为你在FaceBook里边填写的那个就可以了。

二. 除设置URL Scheme外,Facebook SDK还要求在info.plist文件中参加FacebookAppID和FacebookDisplayName两项参数
设置info.plist * 除设置URL Scheme外,Facebook SDK还要求在info.plist文件中参加两项参数,分别是: * FacebookAppID * FacebookDisplayName * 以上参数值是在Facebook开发者平台[https://developers.facebook.com/apps](https://developers.facebook.com/apps) 设置并获取对应的`AppID`和`Display Name` * 如U-Share Demo的测试AppID为506027402887373, Display Name为UmengShare。则参加两项参数为 * FacebookAppID : 506027402887373 * FacebookDisplayName : UmengShare U-Share 6.9.3更新Facebook说明 Facebook SDK版本:4.33.0。在2018年中Facebook对SDK进行了重大窜改,详情见 [https://developers.facebook.com/docs/graph-api/changelog/breaking-changes/?translation](https://developers.facebook.com/docs/graph-api/changelog/breaking-changes/?translation)

三. URL Types

四. 白名单的设置

怎么打开白名单我就不写了,友盟给的白名单大概在实际调试的时间有点问题,以是这里一下给你关于FaceBook全部的

<string>fbapi</string> <string>fb-messenger-api</string> <string>fb-messenger-share-api</string> <string>fbauth3</string> <string>fbshareextension</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbapi20160328</string> <string>fbauth</string> <string>fb-messenger-api20140430</string> <string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string>

固然,你也可以参考FaceBook官方给的白名单设置: 白名单 (需要翻墙)

五. 敲黑板!敲黑板!敲黑板!调用FaceBook的分享!

我之前使用的友盟来调用FaceBook分享

先说有一下我碰到的问题:

  1. 未安装FaceBook App时,有些版本的iPhone无法打开web页面进行登录授权。
  2. 安装FaceBook App但是未登录时,有些版本的iPhone无法打开web页面进行登录请求。
  3. 安装FaceBook App而且登录时间,分享到FaceBook的链接不能包含中文,否则分享链接直接失效不表现了。

由于我原来就是自己写的分享面板,以是关于第一第二个问题的解决方案是,在判定当前是分享到FaceBook时,调用FaceBook自己的分享,不使用友盟的分享方法。

1. 添加头文件

友盟的包里就有不用单独下载,直接写就行了。

#import <FBSDKShareKit/FBSDKShareKit.h>
2. 调用FaceBook的原生分享
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; NSString *urlStr = [weakSelf.urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; content.contentURL = [NSURL URLWithString:urlStr]; FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init]; dialog.fromViewController = self; dialog.shareContent = content; if ([[UMSocialManager defaultManager] isInstall:UMSocialPlatformType_Facebook]) { dialog.mode = FBSDKShareDialogModeNative; } else { dialog.mode = FBSDKShareDialogModeAutomatic; } [dialog show];

先去用友盟的方法判定是否安装了FaceBook,假如没安装就使用 FBSDKShareDialogModeAutomatic
安装了FaceBook就使用 FBSDKShareDialogModeNative

这个 dialog.mode 是个罗列,有Automatic、Navtive、ShareSheet、Browser、Web......官方给的方法里是使用 FBSDKShareDialogModeShareSheet ,但是它是在你的App内部打开一个fb的分享面板给你使用,并不会跳转到FaceBook内,以是你没登录的话,不会有任何反响~
然后换成 dialog.mode = FBSDKShareDialogModeNative; 只要安装了FaceBook就肯定打开原生,GOOD!

最后:
关于友盟分享的设置,以及FaceBook的分享,可以参考以下内容:
友盟第三方分享、授权
关于友盟Facebook分享的问题
iOS中Facebook登录相关知识碎片整理(三方登录SDK为友盟)
iOS Facebook 分享中的坑
2018-01-16 集成友盟分享、登录、统计

## uni.share(OBJECT) 分享。 **平台支持** 5+App **OBJECT 参数说明** ![](https://box.kancloud.cn/45fb26f065ea544b5d653640242b3762_867x564.png) **type 值说明** ![](https://box.kancloud.cn/e281bcc44fa4bc6d9c6354d14332c069_860x281.png) **scene 值说明** ![](https://box.kancloud.cn/422fc5e9fe3ebe952d3ac4f21ff657df_859x168.png) **miniProgram 值说明** ![](https://box.kancloud.cn/2f22c551d1627ac7a2963ee35d58f731_862x206.png) Tips: 仅支持分享小程序到微信聊天界面 分享到Q!Q必须含有href链接 分享文字到QQ时,title必选 新浪微博仅支持分享当地音视频 在ios端,若未安装微博客户端,则不能分享图片 分享新浪微博不会返回准确的成功回调 ## 分享!到微信聊天界面 **分享文字** uni.share({ provider: "weixin", scene: "WXSceneSession", type: 1, summary: "我正在使用HBuilderX开发uni-app,赶快跟我一起来体验!", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); **分享图片** uni.share({ provider: "weixin", scene: "WXSceneSession", type: 2, imageUrl: "https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); **分享图文** href、imageUrl 为必选参数,title/summary 二选一,最好将这四个参数都选上。 ``` uni.share({ provider: "weixin", scene: "WXSceneSession", type: 0, href: "http://uniapp.dcloud.io/", title: "uni-app分享", summary: "我正在使用HBuilderX开发uni-app,赶快跟我一起来体验!", imageUrl: "https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); ``` **分享到微信小伙伴圈** **分享文字** ``` uni.share({ provider: "weixin", scene: "WXSenceTimeline", type: 1, summary: "我正在使用HBuilderX开发uni-app,赶快跟我一起来体验!", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); ``` **分享图片** ``` uni.share({ provider: "weixin", scene: "WXSenceTimeline", type: 2, imageUrl: "https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); ``` **分享图文** href、imageUrl 为必选参数,title、summary 至少有一项。 ``` uni.share({ provider: "weixin", scene: "WXSenceTimeline", type: 0, href: "http://uniapp.dcloud.io/", title: "uni-app分享", summary: "我正在使用HBuilderX开发uni-app,赶快跟我一起来体验!", imageUrl: "https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); ``` **分享到小程序** ``` uni.share({ provider: 'weixin', type: 5, imageUrl: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/app/share-logo@3.png', title: '欢迎体验uniapp', miniProgram: { id: 'gh_abcdefg', path: 'pages/index/index', type: 0, webUrl: 'http://uniapp.dcloud.io' }, success: ret => { console.log(JSON.stringify(ret)); } }); ```

如今的项目需求,增长了在Facebook上的分享。由于我们应用集成的是Facebook自身的SDK。在集成的时间遇到了许多坑,搞定了许多困难。

下面就我记取的坑,摆列一下,详细解决方法暂不提供。

1.Facebook的集成包括了登录和分享。在做登录的时间,方法很easy,只要根据文档上的说明,调用即可。这里有一个小坑,在退出登录的时间,记得要调用一下Facebook的退出方法。不然会导致,Facebook无法切换账号。

2.Facebook的分享是真的坑,接入SDK的时间,万万要记着,根据文档一步步的接,认真看文档。

3.重点:Facebook最新版本不再支持预先设置文本,图片等分享预设的内容。如下就是Facebook的分享。

ShareLinkContent linkContent = new ShareLinkContent.Builder() .setContentUrl(Uri.parse(url)) .build();

那我们要怎么样设置分享的图片等内容呢。经过我的研究发现,Facebook通过别的一种方法,去展示分享。

<metaproperty="og:url"content="http://www.nytimes.com/2015/02/19/arts/international/when-great-minds-dont-think-alike.html"/><metaproperty="og:type"content="div"/><metaproperty="og:title"content="When Great Minds Don’t Think Alike"/><metaproperty="og:description"content="How much does culture influence creative thinking?"/><metaproperty="og:image"content="http://static01.nyt.com/images/2015/02/19/arts/international/!19iht-btnumbers19A/19iht-btnumbers19A-facebookJumbo-v2.jpg"/>property="og:url"content="http://www.nytimes.com/2015/02/19/arts/international/when-great-minds-dont-think-alike.html"/><metaproperty="og:type"content="div"/><metaproperty="og:title"content="When Great Minds Don’t Think Alike"/><metaproperty="og:description"content="How much does culture influence creative thinking?"/><metaproperty="og:image"content="http://static01.nyt.com/images/2015/02/19/arts/international/。19iht-btnumbers19A/19iht-btnumbers19A-facebookJumbo-v2.jpg"/>

我们的html源码中,设置这些标签,可以设置出对应的预览内容。这里就夸大一个image。图片必须大于200*200。不然会从html 中随机拿一张图作为缩略图。

4.做分享测试的时间,由于国内不容许Facebook,我们需要翻墙使用。这里就是一个坑了,留意。肯定不要总是切换VPN,分享出去的图片肯定要设置仅自己可见。

不然,我们开发组加测试,被封了10几个号了。。。

5.别的的应该都不是问题

本文网址: http://www.11st22.com/d/202141483057_6552_190949874/home

推荐阅读

tags

最新发布