NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

【過去質問】最新版iOS SDKを用いたswiftでのFacebook,Twitterの会員認証(ログイン)について #821

Open ncmbsupport opened 6 years ago

ncmbsupport commented 6 years ago

下記サイトを参考に、swiftでFacebook・Twitterの認証データを使った会員管理(ログイン)を行ったのですが、 iOS SDK v2.4.0以降ですと正常に動作しません。 https://qiita.com/natsumo/items/f5c4d41edae17a4a75ce アドバイスいただけますでしょうか。よろしくお願いします。

ncmbsupport commented 6 years ago

以下に、NCMB v2.4.0を使用し Facebook・Twitterの認証データを使った会員登録(ログイン)サンプルを提供致します。 あくまで一サンプルとしてご参考にしていただければ幸いです。

Facebook

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
        if ((error) != nil) {
            // Process error
        }
        else if result.isCancelled {
            // Handle cancellations
        }
        else {
            // Logged in to Facebook successfully

            // Register (log in) to mBaas
            var facebookInfo : Dictionary = Dictionary<String,Any>()
            facebookInfo["id"] = result.token.userID
            facebookInfo["access_token"] = result.token.tokenString
            facebookInfo["expiration_date"] =  result.token.expirationDate
            let user:NCMBUser = NCMBUser.init()

            user.signUp(withFacebookToken: facebookInfo, with: { err in
                if (err != nil) {
                    // Register (login) to mBaas failure
                } else {
                    // Register (login) to mBaas successfully
                    print("ユーザー名:", NCMBUser.current().userName)
                }
            })
        }
    }

Twitter

let logInButton = TWTRLogInButton(logInCompletion: { session, error in
    if (session != nil) {
        // Logged in to Twitter successfully

        // Register (log in) to mBaas
        var data : Dictionary = Dictionary<String,Any>()
        data["consumer_secret"] = Twitter.sharedInstance().authConfig.consumerSecret
        data["oauth_consumer_key"] = Twitter.sharedInstance().authConfig.consumerKey
        data["id"] = session?.userID
        data["oauth_token"] = session?.authToken
        data["oauth_token_secret"] = session?.authTokenSecret
        data["screen_name"] = session?.userName

        let user:NCMBUser = NCMBUser.init()
        user.signUp(withTwitterToken: data, with: { err in
                if (err != nil) {
                    // Register (login) to mBaas failure
                } else {
                    // Register (login) to mBaas successfully
                    print("ユーザー名:", NCMBUser.current().userName)
                }            
        })        
    } else {
        // Logged in to Twitter failure
    }
})
logInButton.center = self.view.center
self.view.addSubview(logInButton)

※なお、ニフクラ mobile backendにおいてはSwiftは本来サポート対象外となっております。  このたびお送りするサンプルについても、  弊社にて動作確認は行っておりますが、正式な保証はいたしかねます。ご了承ください。