菜鸟教程小白 发表于 2022-12-12 14:00:45

ios - facebook登录电子邮件不会很快(没有任何解决方案吗?)


                                            <p><p>你好,我需要一些帮助我一直在搜索关于这个主题的几个小时我尝试了很多东西但我做不到。</p>

<p>这是我的代码</p>

<pre><code>let facebookReadPermissions = [&#34;public_profile&#34;, &#34;email&#34;]

    func getFBUserData() {
    if((FBSDKAccessToken.current()) != nil){
      self.getFBUserDataSecondStep()
    } else {
      FBSDKLoginManager().logIn(withReadPermissions: self.facebookReadPermissions, from: self) { (result, error) in
            if error != nil {
                FBSDKLoginManager().logOut()
            } else if (result?.isCancelled)! {
                FBSDKLoginManager().logOut()
            } else {
                self.showLoadingAlert()
                let grantedPermissions = result?.grantedPermissions.map( {&#34;\($0)&#34;} )
                for permission in self.facebookReadPermissions {
                  if (grantedPermissions?.contains(permission))! {
                        print(&#34;permission: \(permission)&#34;)
                        // CONSOLE WRITING HERE LIKE THIS
                        // permission: public_profile
                        // permission: email
                  }
                }
                if (result?.grantedPermissions.contains(&#34;email&#34;))! {
                  print(&#34;result is: \(result?.description ?? &#34;nil&#34;)&#34;)
                  // result is: &lt;FBSDKLoginManagerLoginResult: 0x1c0441920&gt; ( console )
                  self.getFBUserDataSecondStep()
                } else {
                  FBSDKLoginManager().logOut()
                }
            }
      }
    }
}

    func getFBUserDataSecondStep(){
      FBSDKGraphRequest(graphPath: &#34;/me&#34;, parameters: [&#34;fields&#34;: &#34;id, name, first_name, last_name, email&#34;]).start(completionHandler: { (connection, result, error) -&gt; Void in
            if (error == nil){
                if let dict = result as? Dictionary&lt;String, Any&gt; {
                  print(result)
                  // COMING WITH LIKE THIS

                  //&#34;first_name&#34; = Esn;
                  //id = 10156020817443470;
                  //&#34;last_name&#34; = &#34;\U00c7ak\U0131ralar&#34;;
                  //name = &#34;Esn Banu\U015f \U00c7ak\U0131ralar&#34;;

                  //--// Where is email ?
                  var email = &#34;&#34;
                  var firstName = &#34;&#34;
                  var lastName = &#34;&#34;
                  var facebookId = &#34;&#34;
                  var facebookToken = &#34;&#34;
                  if let controlEmail = dict[&#34;email&#34;] {
                        email = controlEmail as! String
                  }
                  if let controlFirstName = dict[&#34;first_name&#34;] {
                        firstName = controlFirstName as! String
                  }
                  if let controlLastName = dict[&#34;last_name&#34;] {
                        lastName = controlLastName as! String
                  }
                  if let controlFacebookId = FBSDKAccessToken.current().userID {
                        facebookId = controlFacebookId
                  }
                  if let controlFacebookToken = FBSDKAccessToken.current().tokenString {
                        facebookToken = controlFacebookToken
                  }
                        loginWithFacebook(email: email, firstName: firstName, lastName: lastName, facebookId: facebookId, accessToken: facebookToken, finishedClosured: { (state) in
                            if state {
                              let mainPage = self.mainStoryBoard.instantiateViewController(withIdentifier: &#34;SWRevealViewController&#34;)
                              self.removeLoadingAlert()
                              self.passPage(page: mainPage)
                              return
                            }
                            self.removeLoadingAlert()
                            self.alert(message: &#34;Giris Basarisiz&#34;)
                            return
                        })
                }
            } else {
                print(error?.localizedDescription)
            }
      })
}
</code></pre>

<p>我需要获取人员的电子邮件才能将用户注册到我的应用程序。但是无论我尝试什么,电子邮件都没有。我该如何解决这个问题,如果我尝试使用我的个人帐户没问题,但其他用户可能会出现问题。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><pre><code>    Note : This is in swift 4.0

    //giving permission
func getpermission(){
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
   //   fbLoginManager.loginBehavior = FBSDKLoginBehavior.web

      fbLoginManager.logIn(withReadPermissions: [&#34;email&#34;], from: self) { (result, error) in
            if (error == nil){
                let fbloginresult : FBSDKLoginManagerLoginResult = result!
                if fbloginresult.grantedPermissions != nil {
                  if(fbloginresult.grantedPermissions.contains(&#34;email&#34;))
                  {
                        self.getFBUserData()
                        fbLoginManager.logOut()

                  }
                }
            }
      }

}
// Get all details from here
func getFBUserData(){
      var fbId : String = &#34;&#34;
      var fbEmail : String = &#34;&#34;
      var fbName : String = &#34;&#34;
      var fbPickUrl : String = &#34;&#34;

      if((FBSDKAccessToken.current()) != nil){
            FBSDKGraphRequest(graphPath: &#34;me&#34;, parameters: [&#34;fields&#34;: &#34;id, name, first_name, last_name, picture.type(large), email&#34;]).start(completionHandler: { (connection, result, error) -&gt; Void in
                if (error == nil){
                  //everything works print the user data
                  print(&#34;Result111:\(String(describing: result)) &#34;as Any)
                }
                let dict = result as! NSDictionary
                print(&#34;FB Email1st:\(dict)&#34;)

                fbId = dict[&#34;id&#34;] as! String
                fbName = dict[&#34;name&#34;] as! String
                fbEmail = dict[&#34;email&#34;] as! String
//get user picture url from dictionary
fbPickUrl = (((dict[&#34;picture&#34;] as? )?[&#34;data&#34;] as? )?[&#34;url&#34;] as? String)!

print(&#34;FB ID: \(fbId)\n FB Email:\(fbEmail) \n FbName:\(fbName) \n FBProfileUrl:\(fbPickUrl)\n&#34;)


            })
      }

    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - facebook登录电子邮件不会很快(没有任何解决方案吗?),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47147596/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47147596/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - facebook登录电子邮件不会很快(没有任何解决方案吗?)