location_on 首页 keyboard_arrow_right 金融 keyboard_arrow_right 正文

新浪微博第三方登录JS集成:下载SDK添加依赖库步骤

金融 access_alarms2026-07-02 visibility1 text_decrease title text_increase

1.2 集成SDK到Github下载 最新的SDK, 里面含有集成文档.

将文件夹内的libWeiboSDK 文件夹添加到项目工程内, 新版的SDK此文件夹包含: libWeiboSDK.a , WBHttpRequest.h , WBHttpRequest+WeiboToken.h , WeiboSDK.bundle , WeiboSDK.h , WeiboSDK+Statistics.h 六个文件.

然后, 来到项目 Build Settings -> Linking 下的 Other Linker Flags. 添加 -ObjC

添加系统依赖库

到Build Phases -> Link Binary With Libraries ,添加以下系统库:

后两个在新版Xcode中为

设置工程回调URL Scheme

来到Info-> URL Types, 添加URL Scheme

格式为: wb+AppKey

例如: 你的AppKey是: 123456789

则URL Scheme为: wb123456789

新浪微博第三方登陆 js_集成新浪微博SDK到iOS项目_新浪微博iOS开发教程

添加URL Scheme

适配iOS 9+ , 添加Scheme白名单

在Info.plist文件内新加字段: LSApplicationQueriesSchemes, 类型为Array(数组)

然后添加内容, 类型为String(字符串)

新浪微博需要添加以下字段:

或者, 在Info.plist文件右键, Open as... -> Source Code, 可打开文件显示源码, 进行编辑, 在倒数第三行(即: 标签的上面)的空白处添加以下代码:

LSApplicationQueriesSchemes

        sinaweibo
        sinaweibohd
        sinaweibosso
        sinaweibohdsso
        weibosdk
        weibosdk2.5

如果还有其他平台的白名单需要添加, 例如微信, QQ, 只需要在标签内添加对应的字段即可;

PS: Info.plist文件显示为Source Code后, 如果还想显示原来的列表格式, 可以: 右键 -> Open as.. -> Property List 即可;

适配iOS 9+, 网络请求

回退到HTTP

或者以Source Code 打开Info.plist文件, 空白处添加以下代码:

NSAppTransportSecurity
    
        NSAllowsArbitraryLoads
        
    

在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。

然后给它添加一个值: NSExceptionDomains,类型为字典类型;

把需要的支持的域添加給NSExceptionDomains

其中域作为Key,类型为字典类型。

每个域下面需要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。

均为Boolean类型,值分别为YES、NO、YES

新浪微博需要设置的域有:

新浪微博iOS开发教程_新浪微博第三方登陆 js_集成新浪微博SDK到iOS项目

新浪微博域

或者以Source Code 打开Info.plist文件, 空白处添加以下代码:

NSAppTransportSecurity
    
        NSExceptionDomains
        
            weibo.com
            
                NSExceptionAllowsInsecureHTTPLoads
                
                NSExceptionRequiresForwardSecrecy
                
                NSIncludesSubdomains
                
            
            weibo.cn
            
                NSExceptionAllowsInsecureHTTPLoads
                
                NSExceptionRequiresForwardSecrecy
                
                NSIncludesSubdomains
                
            
            sina.com.cn
            
                NSExceptionAllowsInsecureHTTPLoads
                
                NSExceptionRequiresForwardSecrecy
                
                NSIncludesSubdomains
                
            
        
    

PS: 这种方式需要对每个要以HTTP方式访问的域名进行设置, 比较麻烦, 建议使用第一种方式.

到此, 集成及适配结束...

PS: 在使用相关API的时候, 需要新建桥接头文件, 或者在已有桥接头文件内引用其头文件:

#import "WeiboSDK.h"

2. 登录

在AppDelegate.swift中注册app:

WeiboSDK.registerApp(sinaWeiboAppKey)
WeiboSDK.enableDebugMode(true)

在方法 func application(_ app: UIApplication, open url: URL, options:

UIApplicationOpenURLOptionsKey : Any

= ) -> Bool 中添加回调:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
  let urlKey: String = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String
   
  if urlKey == "com.sina.weibo" {
            // 新浪微博 的回调
            return WeiboSDK.handleOpen(url, delegate: self)
        }
        
        return true
}

如果在未安装微博客户端, 使用H5网页进行授权登录的时候, 还需要实现下面这个代理方法:

// 新浪微博的H5网页登录回调需要实现这个方法
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        // 这里的URL Schemes是配置在 info -> URL types中, 添加的新浪微博的URL schemes
        // 例如: 你的新浪微博的AppKey为: 123456789, 那么这个值就是: wb123456789
        if url.scheme == "URL Schemes" {
            // 新浪微博 的回调
            return LDSinaShare.handle(url)
        }
        
        return true
    }

这个方法在iOS9的时候被废弃, API说是使用上面的代理新方法替换, 但是在使用H5网页登录的时候, 还是会走这个方法.

实现其代理方法:

func didReceiveWeiboRequest(_ request: WBBaseRequest!) {
        
    }
    
func didReceiveWeiboResponse(_ response: WBBaseResponse!) {
        
        guard let res = response as? WBAuthorizeResponse else { return  }
        
        guard let uid = res.userID else { return  }
        guard let accessToken = res.accessToken else { return }
        
        let urlStr = "https://api.weibo.com/2/users/show.json?uid=\(uid)&access_token=\(accessToken)&source=\(sinaWeiboAppKey)"
        
        let url = URL(string: urlStr)
        
        do {
            //                    let responseStr = try String.init(contentsOf: url!, encoding: String.Encoding.utf8)
            
            let responseData = try Data.init(contentsOf: url!, options: Data.ReadingOptions.alwaysMapped)
            
            let dict = try JSONSerialization.jsonObject(with: responseData, options: JSONSerialization.ReadingOptions.allowFragments) as? Dictionary
            
            guard let dic = dict else {
                //获取授权信息异常
                return
            }
            
            print(dic)
            
        } catch {
            
          //获取授权信息异常
        }
    }

然后在需要吊起微博, 发起登录的方法里添加以下代码:

let request = WBAuthorizeRequest()
        request.scope = "all"
        // 此字段的内容可自定义, 在请求成功后会原样返回, 可用于校验或者区分登录来源
        //        request.userInfo = ["": ""]
        request.redirectURI = self.sinaWeibOredirectUri
        
        WeiboSDK.send(request)

其中, 这里的scope字段看参考官方的说明:scope参数官方说明

这样, 就可以吊起微博客户端, 或者打开一个web页面, 发起微博登录.

衣服图案染色怎么办?试试这招,白衣服也能救回来
« 上一篇 2026-07-02
互联网生态小程序新规:平台与开发者必看自律公约
下一篇 » 2026-07-02