菜鸟教程小白 发表于 2022-12-12 15:30:16

ios - FBSDKLoginManager 未在 native ios 应用程序中打开登录对话框


                                            <p><p>我是 iPhone 开发的新手,我想使用最新的 facebook sdk 4 从我的原生 iOS 简单应用程序进行 facebook 登录。我只想从自定义 <code>UIButton</code> 打开一个 facebook 登录对话框单击,在我的应用程序中,为此我在按钮单击方法中执行以下代码..</p>

<pre><code>- (IBAction)didTapLoginFaceBook:(id)sender {

    FBSDKLoginManager *login = [ init];
    handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
      if (error) {
            // Process error

      NSLog(@&#34;Unexpected login error: %@&#34;, error);
      NSString *alertMessage = error.userInfo ?: @&#34;There was a problem logging in. Please try again later.&#34;;
      NSString *alertTitle = error.userInfo ?: @&#34;Oops&#34;;
      [[ initWithTitle:alertTitle
                                        message:alertMessage
                                       delegate:nil
                              cancelButtonTitle:@&#34;OK&#34;
                              otherButtonTitles:nil] show];


      } else if (result.isCancelled) {
            // Handle cancellations
      } else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if () {
                // Do work
            }
      }
    }];


}
</code></pre>

<p>此代码的工作方式有所不同,但我想打开一个登录对话框表单自定义 <code>UIButton</code> 在 nativeiOS 应用程序中单击。</p>

<p>所以,请用一些代码提出正确的方法,提前谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><strong>在 Objective-C 中使用自定义按钮的 Facebook 登录 4.x</strong></p>

<pre><code>- (IBAction)btnFacebookPressed:(id)sender {
    FBSDKLoginManager *login = [ init];
    login.loginBehavior = FBSDKLoginBehaviorBrowser;
    handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
   {
         if (error)
         {
             // Process error
         }
         else if (result.isCancelled)
         {
             // Handle cancellations
         }
         else
         {
             if ()
             {
               NSLog(@&#34;result is:%@&#34;,result);
               ;
               ;
             }
         }
   }];
}

- (void)fetchUserInfo {
    if ()
    {
      NSLog(@&#34;Token is available : %@&#34;,[tokenString]);

      [[ initWithGraphPath:@&#34;me&#34; parameters:@{@&#34;fields&#34;: @&#34;id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location , friends ,hometown , friendlists&#34;}]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error)
             {
               NSLog(@&#34;resultis:%@&#34;,result);

             }
             else
             {
               NSLog(@&#34;Error %@&#34;,error);
             }
         }];
    }
}
</code></pre>

<p><strong>在 Swift 中使用自定义按钮的 Facebook 登录 4.x</strong></p>

<pre><code>@IBAction func btnFacebookPressed(_ sender: Any) {

    let loginManager = FBSDKLoginManager()
    loginManager.loginBehavior = FBSDKLoginBehavior.browser;

    loginManager.logIn(withReadPermissions: [&#34;email&#34;], from: self, handler: {(result : FBSDKLoginManagerLoginResult?, error : Error?) -&gt; Void in
      if error != nil {
            // Process error
      }
      else if (result?.isCancelled)! {
            // Handle cancellations
      }
      else if (result?.grantedPermissions.contains(&#34;email&#34;))! {
            print(&#34;result is: \(result)&#34;);
            self.fetchUserInfo()
            loginManager.logOut()
      }
    })
}


func fetchUserInfo() {
    if let accessToken = FBSDKAccessToken.current()?.tokenString {
      print(&#34;Token is available : \(accessToken)&#34;)

      FBSDKGraphRequest(graphPath: &#34;me&#34;, parameters: [&#34;fields&#34;: &#34;id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location , friends ,hometown , friendlists&#34;]).start(completionHandler: { (connection : FBSDKGraphRequestConnection?, result : Any?, error : Error?) in

            if let error = error {
                print(&#34;Error \(error)&#34;)
            }
            else if let result= result {
                print(&#34;result:\(result)&#34;)
            }
      })
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - FBSDKLoginManager 未在 nativeios 应用程序中打开登录对话框,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30771501/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30771501/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - FBSDKLoginManager 未在 native ios 应用程序中打开登录对话框