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.
|
|
|
//
|
|
|
|
// 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?
|
|
|
|
}
|
|
|
|
|
|
|
|
struct LoginView: View {
|
|
|
|
|
|
|
|
@Environment(\.managedObjectContext) var contenxt:NSManagedObjectContext
|
|
|
|
|
|
|
|
@EnvironmentObject var user:User
|
|
|
|
|
|
|
|
@State var userInfo=UserProfile()
|
|
|
|
|
|
|
|
let queue=OperationQueue()
|
|
|
|
|
|
|
|
|
|
|
|
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")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
VStack {
|
|
|
|
if self.user.access_token==nil{
|
|
|
|
Text("正在跳转到授权页面").onAppear(perform: {
|
|
|
|
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!)")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
struct LoginView_Previews: PreviewProvider {
|
|
|
|
|
|
|
|
static var previews: some View {
|
|
|
|
LoginView().environment(\.managedObjectContext, UserData.getContext()).environmentObject(UserData.getUser())
|
|
|
|
}
|
|
|
|
}
|