首页 > 代码库 > 烦人的Facebook分享授权

烦人的Facebook分享授权

开发端授权app权限

facebook要求提交应用到他们平台, 并且还限制100mb, 坑爹死了, 果断使用google drive分享给他们, 最開始不确定分享给他们什么样的程序包, 结果审核没通过
这里给大家一个官方公布包的參考, 特喵的不在提交的地方着重给个链接, 挠死你
https://developers.facebook.com/docs/ios/getting-started/advanced

须要相应app开启 publish_actions 权限才干够分享出去:
技术分享
同一时候须要注意, 申请的话是比較麻烦, 然后设置此权限的具体信息
技术分享
然后提交应用程序, 以下就是通过模拟器打包的方式打包, 一定要依照步骤来, 普通打包对方无法測试

模拟器中的測试:

要注意以下几点:

info.plist必须包括的内容, 改动info.plist用source view模式直接编辑xml文档

  • CFBundleURLTypes中必须有CFBundleURLSchemes, fb{Your Facebook App Id}须要自己手动去改, 这个地方sharesdk也告诉你加入了
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb{YourFacebookAppId}</string>
            </array>
        </dict>
    </array>
  • facebook官方要求加入的信息, 和CFBundleURLTypes并列
    <key>FacebookAppID</key>
    <string>{YourFacebookAppId}</string>
    <key>FacebookDisplayName</key>
    <string>{YourFacebookAppName}</string>
  • 改动ShareSDK针对facebook授权方式改为Web方式, 给facebook发完再改回来, 模拟器上facebook是没有预装, 可是给真机是SSO推荐:
[appInfo SSDKSetupFacebookByAppKey:@"{YourFacebookAppId}"
                                               appSecret:@"{YourFacebookAppSecret}"
                                                authType:SSDKAuthTypeWeb];
  • HTTP訪问权限, 相同和CFBundleURLTypes并列
    不开启在模拟器中会出现 NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)的错误
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

模拟环境程序打包:

原理就是你用模拟器生成, 缓存的文件打包给对方, 命令行这种
尽管非常长 可是须要改的仅仅有{}的部分

ditto -ck --sequesterRsrc --keepParent `ls -1 -d -t {你模拟器缓存文件路径}/{你游戏名称}.app | head -n 1` ~/Desktop/{打包到桌面的程序名}.zip

模拟器路径查找, 找这个位置:

/Users/{username}/Library/Developer/Xcode/DerivedData/

关闭xcode, 并全选,清空里面全部缓存项目
打开xcode, 通过模拟器编译生成出来一个和项目有关联的文件夹

/Users/{username}/Library/Developer/Xcode/DerivedData/{project名+随机字母}/Build/Products/Debug-iphonesimulator/{project名}.app

找到之后回到上面代码编译一下提交就好了, 坑爹的facebook审核

測试自己的打包app:

  • 下载nodejs环境 for mac
  • 安装环境(node-v4.1.1.pkg)到你的系统
  • 下载測试程序 ios-sim
  • 解压缩
  • 用终端找到这个文件夹
  • 运行 xcrun simctl list devices 列出xcodeproject下创建模拟器列表
  • 运行 sudo npm install ios-sim -g
  • ios-sim 能够直接当系统命令使用了
  • 运行 sudo ios-sim showdevicetypes 从中选择设备名称

iPhone-4s, 9.0
iPhone-5, 9.0
iPhone-5s, 9.0
iPhone-6, 9.0
iPhone-6-Plus, 9.0
iPhone-6s, 9.0
iPhone-6s-Plus, 9.0
iPad-2, 9.0
iPad-Retina, 9.0
iPad-Air, 9.0
iPad-Air-2, 9.0
Apple-Watch-38mm, watchOS 2.0
Apple-Watch-42mm, watchOS 2.0

  • 运行 sudo ios-sim --devicetypeid iPhone-6 launch {yourapp}.app
  • 默认不选择设备会直接默认iWatch模拟器运行, 会无法运行

打包測试后没问题, 就能够发给facebook了

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

烦人的Facebook分享授权