社交网络 0.4.0

SocialNetwork 0.4.0

iWheelBuy 维护。



  • iWheelBuy

社交网络

Version License Platform

使用说明

通过CocoaPods安装

pod 'SocialNetwork', '0.3.4'

可以打开官方社交网络应用或展示SFSafariViewController进行授权

switch SocialNetwork.facebook.appExists {
case true:
    UIApplication.shared.openURL(SocialNetwork.facebook.appUrl)
case false:
    let controller = SFSafariViewController(url: SocialNetwork.facebook.oauthUrl)
    UIApplication.shared.keyWindow?.rootViewController?.present(controller: controller)
}

请注意,并非所有社交网络都允许通过其官方应用进行授权。

Info.plist配置

要使用appExists变量,您应该为所需社交网络提供LSApplicationQueriesSchemes

<key>LSApplicationQueriesSchemes</key>
<array>
    <!-- facebook.com -->
    <string>fb</string>
    <string>fbapi</string>
    <string>fbauth</string>
    <string>fbauth2</string>
    <!-- ok.ru -->
    <string>odnoklassniki</string>
    <string>okauth</string>
    <!-- vk.com -->
    <string>vk</string>
    <string>vk-share</string>
    <string>vkauthorize</string>
</array>

必要的CFBundleURLTypes - socialnetwork。其他CFBundleURLTypes是可选的,并且仅在您计划使用官方应用进行授权的情况下提供

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>SocialNetwork</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>socialnetwork</string>
            <!-- facebook.com -->
            <string>fb0123456789</string>
            <!-- ok.ru -->
            <string>ok0123456789</string>
            <!-- vk.com -->
            <string>vk0123456789</string>
        </array>
    </dict>
</array>

重定向URL配置

在每个计划用于授权的社交网络中,您应该提供一个重定向URL

https://iwheelbuy.github.io/SocialNetwork/simplified.html

重定向HTML页面的代码可以在那里找到

https://github.com/iwheelbuy/SocialNetwork/blob/master/docs/simplified.html

基本设置

在您的项目中的某个位置设置 SocialNetworkDataSourceSocialNetworkDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    SocialNetwork.dataSource = self
    SocialNetwork.delegate = self
    return true
}

按照这种方式继续URL

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    if SocialNetwork.didProceed(url: url) {
        return true
    }
    return false
}

遵守 SocialNetworkDelegate 以接收授权数据

extension AppDelegate: SocialNetworkDelegate {
    
    func socialNetwork(socialNetwork: SocialNetwork, didCompleteWithParameters parameters: [String : String]) {
        // hide authorization controllers if there are some
        if let token = socialNetwork.getToken(parameters: parameters) {
            // do something with token
        }
    }
}

遵守 SocialNetworkDataSource 并为所需社交网络提供信息

extension AppDelegate: SocialNetworkDataSource {
    
    func socialNetworkClientIdentifier(socialNetwork: SocialNetwork) -> String? {
        switch socialNetwork {
        case .facebook:
            return "0123456789"
        default:
            return nil
        }
    }
}

还有一些额外的可选方法,其中您可以为代码流授权提供客户端密钥或更改默认权限

extension AppDelegate: SocialNetworkDataSource {
    
    func socialNetworkClientSecret(socialNetwork: SocialNetwork) -> String? {
        switch socialNetwork {
        case .facebook:
            return "987654321"
        default:
            return nil
        }
    }
    
    func socialNetworkPermissions(socialNetwork: SocialNetwork) -> String? {
        switch socialNetwork {
        case .facebook:
            return "public_profile,email"
        default:
            return nil
        }
    }
}

作者

iwheelbuy, [email protected]

许可

SocialNetwork 按照MIT许可可用。请参阅LICENSE文件以获取更多信息。