使用蒙面域名进行社交登录

时间:2017-08-21 13:12:57

标签: laravel-5.1 google-signin laravel-socialite

我为所有客户使用子域,例如 client.example.com ,然后我屏蔽了他们的域名。我添加了社交登录Google,Facebook和LinkedIn。

Facebook和LinkedIn似乎正在运作但谷歌登录的问题只是在我点击登录URL时显示空白页面。

是否可以将社交登录用于屏蔽域?

因为其他两个工作正常,谷歌没有抛出任何错误,所以无法找出解决方案。

Project在Laravel-5.1中,我使用了Socialite

任何帮助都会很棒

提前谢谢

1 个答案:

答案 0 :(得分:0)

第1步      安装pod 'Google/SignIn'的Pod文件 第2步 以下代码添加AppDelegate

AppDelegate.swift     导入UIKit     导入谷歌     导入GoogleSignIn     导入FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
var configureError: NSError?
        GGLContext.sharedInstance().configureWithError(&configureError)
        assert(configureError == nil, "Error configuring Google services: \(String(describing: configureError))")

    return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

print("Google+ url scheme")
            return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)

 }

@available(iOS 9.0, *)
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

print("Google+ url scheme")
            let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String
            let annotation = options[UIApplicationOpenURLOptionsKey.annotation]
            return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
}

ViewController.swift

    import UIKit
    import GoogleSignIn
    import FacebookCore
    import FacebookLogin

    class ViewController: UIViewController, GIDSignInDelegate, GIDSignInUIDelegate {

        @IBOutlet weak var profileImage: UIImageView!
        @IBOutlet weak var emailText: UITextField!
        @IBOutlet weak var passwordText: UITextField!
        @IBOutlet weak var rememberMeSegment: UISwitch!
        @IBOutlet weak var appSignInButton: UIButton!
        @IBOutlet weak var googleSignInButton: UIButton!
        @IBOutlet weak var facebookSignInButton: UIButton!
        @IBOutlet weak var appSignUpButton: UIButton!

        override func viewDidLoad() {
            super.viewDidLoad()

        self.profileImage.layer.masksToBounds = false
        self.profileImage.layer.cornerRadius = self.profileImage.frame.height/2
        self.profileImage.clipsToBounds = true
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.navigationBar.isHidden = true
    }
        @IBAction func googleSignIn(sender: UIButton) {
        GIDSignIn.sharedInstance().scopes = ["https://www.googleapis.com/auth/plus.login","https://www.googleapis.com/auth/plus.me"]
        GIDSignIn.sharedInstance().shouldFetchBasicProfile = true
        GIDSignIn.sharedInstance().uiDelegate = self
        GIDSignIn.sharedInstance().delegate = self
        GIDSignIn.sharedInstance().signIn()
    }

    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

        if (error == nil) {

            print("Name : \(user.profile.name!)")
            print("Email : \(user.profile.email!)")

            if let email = user.profile.email {
                self.emailText.text = email
            }

            if(user.profile.hasImage){
                print("Profile Image : \(user.profile.imageURL(withDimension: 100))")

                self.profileImage.downloadedFrom(link: user.profile.imageURL(withDimension: 100).absoluteString)

            } else {
                print("Profile Image : Profile image not available")
            }

            GIDSignIn.sharedInstance().signOut()
            GIDSignIn.sharedInstance().disconnect()

        } else {
            let alertController = UIAlertController(title: "Error", message: "\(error.localizedDescription)")
            self.present(alertController, animated: true, completion: nil)
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

 - extension String {
           func hexStringToUIColor () -> UIColor {
               var cString:String = self.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()


        if (cString.hasPrefix("#")) {
            cString.remove(at: cString.startIndex)
        }

        if ((cString.characters.count) != 6) {
            return UIColor.gray
        }

        var rgbValue:UInt32 = 0
        Scanner(string: cString).scanHexInt32(&rgbValue)

        return UIColor(
            red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
            alpha: CGFloat(1.0)
        )
    }
}

extension UIAlertController {
    convenience init(title: String, message: String) {
        self.init(title: title, message: message, preferredStyle: .alert)
        let action = UIAlertAction(title: NSLocalizedString("OK", comment: "OK action"), style: .default, handler: nil)
        addAction(action)
    }
}