4

Firebase 経由で Digits ユーザーを認証しようとしています。twitter エンドポイントを介して Digits ユーザーを認証できるという話を 2 回以上聞いたことがあります。だから私は今それを試していますが、私はかなり立ち往生しています。ユーザーを作成できるように、session?.authToken を Firebase に送信しようとしています。数字は本当にクールに見えるので、私はそれを使い続けたいと確信しています. これがまったく不可能な場合は、数字を処理できる BaaS の方向性を示していただければ幸いです。事前に感謝します。ここに私のコードがあります:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let authButton = DGTAuthenticateButton(authenticationCompletion: { (session: DGTSession?, error: NSError?) in
            if (session != nil) {
                // TODO: associate the session userID with your user model
                let message = "Phone number: \(session!.phoneNumber)"
                let alertController = UIAlertController(title: "You are logged in!", message: message, preferredStyle: .Alert)
                alertController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: .None))
                self.presentViewController(alertController, animated: true, completion: .None)
                DataService.FireBase.Surfer.authWithOAuthProvider("twitter", token: session!.authToken, withCompletionBlock: { error, newAuthData in
                    if error != nil {
                        print(error)

                    } else {
                        print(newAuthData)
                    }
                })

            } else {
                NSLog("Authentication error: %@", error!.localizedDescription)

            }
        })
        authButton.center = self.view.center
        self.view.addSubview(authButton)
        let button   = UIButton(type: UIButtonType.System) as UIButton
        button.frame = CGRectMake(100, 100, 100, 50)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test Button", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(button)

    }

    func buttonAction(sender:UIButton!)
    {
        print("Button tapped")
        print(authTkn)
        Digits.sharedInstance().logOut()
    }

ここにDataServiceがあります:

class DataService{

    static let FireBase = DataService()

    private var _REF_BASE = Firebase(url: "https://testingtoday.firebaseio.com")

    var Surfer: Firebase {
        return _REF_BASE
    }
}
4

1 に答える 1

2

Firebase は、Twitter Digits を ID プロバイダーとして使用することをサポートしていません。

つまり、Firebase で Digits 認証済みユーザーを使用する唯一の方法は、Digits ID に基づいてカスタム トークンを作成することです。したがって、Digits に認証を処理させてから、Firebase に結果の uid を伝えます。

このアプローチの欠点は、カスタム トークンを作成するには、Firebase のシークレットを使用する必要があることです。これは、クライアント側のアプリでトークンを作成してはならないことを意味します。これは、アプリのリソースを確認できる賢い人にシークレットを渡すことになるためです。

于 2016-02-28T18:40:14.947 に答える