You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weibo/Weibo/LoginView.swift

79 lines
2.0 KiB

4 years ago
//
// LoginView.swift
// Weibo
//
// Created by Qihua Pan on 2020/8/17.
// Copyright © 2020 Qihua Pan. All rights reserved.
//
import SwiftUI
import CoreData
import SwiftyJSON
import Alamofire
struct UserProfile {
var name:String?
}
4 years ago
struct LoginView: View {
@Environment(\.managedObjectContext) var contenxt:NSManagedObjectContext
@EnvironmentObject var user:User
@State var userInfo=UserProfile()
let queue=OperationQueue()
4 years ago
func login() {
let request=WBAuthorizeRequest()
request.redirectURI="https://api.weibo.com/oauth2/default.html"
WeiboSDK.send(request)
}
func loadUserInfo(){
print("toekn=\(self.user.access_token),date=\(self.user.expiration_Date)")
AF.request("https://api.weibo.com/2/users/show.json",parameters: ["access_token":self.user.access_token,"uid":self.user.uid]).responseJSON { response in
if let data=response.data,let json = try? JSON(data: data){
print(json)
}else{
print("loadUserInfo error")
}
}
}
4 years ago
var body: some View {
VStack {
if self.user.access_token==nil{
Text("正在跳转到授权页面").onAppear(perform: {
4 years ago
self.login()
})
}
else if self.user.expiration_Date<Date().timeIntervalSince1970{
Text("正在跳转到授权页面").onAppear(perform: {
self.login()
})
}
else if self.userInfo.name==nil{
Text("正在获取用户信息").onAppear(perform: {
self.loadUserInfo()
})
}else{
Text("username=\(self.userInfo.name!)")
4 years ago
}
}
}
}
struct LoginView_Previews: PreviewProvider {
static var previews: some View {
LoginView().environment(\.managedObjectContext, UserData.getContext()).environmentObject(UserData.getUser())
}
}