0

i am facing problem to give provider name because i dont know how to give proper provider in swifter.authorize

my controller is where i am using login code you can check func actiontwitter in which i have used provider then please suggest me how to use provider as parameter

i have installed swifter package in project

//
//  twitterVc.swift
//  socialLogin
//
//  Created by ios on 19/11/22.
//

import UIKit
import FirebaseAuth
import Swifter
import SafariServices

struct TwitterConstants {
    
    static let CONSUMER_KEY = "MY_CONSUMER_KEY"
    static let CONSUMER_SECRET_KEY = "MY_CONSUMER_SECRET_KEY"
    static let CALLBACK_URL = "MY_CALLBACK_URL"
    
}

class twitterVc: UIViewController {
    var swifter: Swifter!
    var accToken: Credential.OAuthAccessToken?

    @IBOutlet weak var submitBtn: UIButton!
   
    var provider = OAuthProvider(providerID: "twitter.com")
    override func viewDidLoad() {
        super.viewDidLoad()

        self.isLoggedIn { loggedin in
                    if loggedin {
                        // Show the ViewController with the logged in user
                        print("Logged In?: YES")
                    } else {
                        // Show the Home ViewController
                        print("Logged In?: NO")
                    }
                }
        
    }
    func isLoggedIn(completion: @escaping (Bool) -> ()) {
            let userDefaults = UserDefaults.standard
            let accessToken = userDefaults.string(forKey: "oauth_token") ?? ""
            let accessTokenSecret = userDefaults.string(forKey: "oauth_token_secret") ?? ""
            
            let swifter = Swifter(consumerKey: TwitterConstants.CONSUMER_KEY, consumerSecret: TwitterConstants.CONSUMER_SECRET_KEY, oauthToken: accessToken, oauthTokenSecret: accessTokenSecret)
            swifter.verifyAccountCredentials(includeEntities: false, skipStatus: false, includeEmail: true, success: { _ in
                // Verify Succeed - Access Token is valid
                completion(true)
            }) { _ in
                // Verify Failed - Access Token has expired
                completion(false)
            }
        }
    @IBAction func actionSubmit(_ sender: Any) {
        self.actionTwitter()
    }
    
    func actionTwitter(){
        //~~~~~~~~~~~~~~problem is here it is not taking provider as parameter
        self.swifter.authorize(withProvider: provider as! ASWebAuthenticationPresentationContextProviding, callbackURL: URL(string: TwitterConstants.CALLBACK_URL)!) { (tokan: Credential.OAuthAccessToken?, resp: URLResponse) in
            
        }
    }
}


func failureHandler(){
    
}

extension twitterVc: SFSafariViewControllerDelegate{
    func getUserProfile() {
            self.swifter.verifyAccountCredentials(includeEntities: false, skipStatus: false, includeEmail: true, success: { json in
                let userDefaults = UserDefaults.standard
                            userDefaults.set(self.accToken?.key, forKey: "oauth_token")
                            userDefaults.set(self.accToken?.secret, forKey: "oauth_token_secret")
                // Twitter Id
                if let twitterId = json["id_str"].string {
                    print("Twitter Id: \(twitterId)")
                } else {
//                    self.twitterId = "Not exists"
                }
                // Twitter Handle
                if let twitterHandle = json["screen_name"].string {
                    print("Twitter Handle: \(twitterHandle)")
                } else {
//                    self.twitterHandle = "Not exists"
                }
                // Twitter Name
                if let twitterName = json["name"].string {
                    print("Twitter Name: \(twitterName)")
                } else {
//                    self.twitterName = "Not exists"
                }
                // Twitter Email
                if let twitterEmail = json["email"].string {
                    print("Twitter Email: \(twitterEmail)")
                } else {
//                    self.twitterEmail = "Not exists"
                }
                // Twitter Profile Pic URL
                if let twitterProfilePic = json["profile_image_url_https"].string?.replacingOccurrences(of: "_normal", with: "", options: .literal, range: nil) {
                    print("Twitter Profile URL: \(twitterProfilePic)")
                } else {
//                    self.twitterProfilePicURL = "Not exists"
                }
                print("Twitter Access Token: \(self.accToken?.key ?? "Not exists")")
                
            }) { error in
                print("ERROR: \(error.localizedDescription)")
            }
        }
}

0 Answers0