示例
要运行示例项目,请先克隆仓库,然后从示例目录运行pod install
。
import FacebookLogin
import FacebookCore
class Example {
let loginManager = LoginManager()
func signIn() {
loginManager.rx.logIn(with: [.publicProfile]).flatMap { [weak self] (loginResult) -> Observable<EmailResult> in
guard let strongSelf = self else { return .just((nil, "Something went wrong")) }
switch loginResult {
case .cancelled: return .just((nil, "User cancelled the result"))
case let .failed(error): return .just((nil, error.localizedDescription))
// Extract the facebook login result here and chain it with your graph request
case let .success(acceptedPermissions, declinedPermissions, accessToken): return strongSelf.fetchEmail()
}
}
.subscribe(onNext: { email, error in
if let `email` = email {
print(email)
} else if let `error` = error {
print(error)
}
})
.disposed(by: disposeBag)
}
func fetchEmail() -> Observable<EmailResult> {
let graphRequest = GraphRequest(graphPath: "/me")
return graphRequest.rx.getResponse().map { result in
switch result {
case let .success(response):
guard let objectMap = response.dictionaryValue, let email = objectMap["email"] as? String else { return (nil, "Couldn't find email") }
return (email, nil)
case let .failed(error):
return (nil, error.localizedDescription)
}
}
}
}
要求
pod 'RxSwift'
pod 'FacebookCore'
pod 'FacebookLogin'
安装
RxFacebook通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中
pod 'RxFacebook'
作者
Sourav Chandra RxSwift爱好者 [email protected]
许可证
RxFacebook 遵循 MIT 许可协议。更多信息请参阅 LICENSE 文件。