繁体   English   中英

Xamarin IOS Facebook SDK登录按钮

[英]Xamarin IOS Facebook SDK LoginButton

我是Xamarin和IOS开发的新手,不理解为什么出现以下错误:

但是首先是一些信息:

我正在使用此SDK: https//components.xamarin.com/view/facebookios

并在ViewDidLoad的ViewController中创建我的LoginButtin,如下所示:

loginButton = new LoginButton(new CGRect(48, 0, 218, 46))
            {
                LoginBehavior = LoginBehavior.Native,
                ReadPermissions = readPermissions.ToArray()
            };
            View.AddSubview(button);

但是在我的情节提要中,我收到以下错误消息:

在此处输入图片说明

编辑:我的ViewController.cs

using System;
using System.Collections.Generic;
using UIKit;

namespace FacebookLogin
{
    public partial class ViewController : UIViewController
    {
        List<string> readPermissions = new List<string> { "public_profile" };
        LoginButton loginButton;

        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            loginButton = new LoginButton(new CGRect(48, 0, 218, 46))
            {
                LoginBehavior = LoginBehavior.Native,
                ReadPermissions = readPermissions.ToArray()
            };
            View.AddSubview(button);
        }

        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        }
    }
}

确保遵循入门页面上的说明。 我在您的解决方案资源管理器中看到一个空组件,但以防万一,请确保您已安装了带有金块的Xamarin.Facebook.iOS 4.27.1。 当然,您还需要设置Facebook应用程序 ,登录并配置iOS部分(例如设置BundleID)。

不要在控制器中创建按钮。 您可以执行的操作是使用StoryBoard设计器放置常规按钮。 然后,在属性窗口中单击“类”,它将打开一个下拉菜单。 在选择中,您应该看到FBSDKLoginButton,选择该类。 给它起一个像btnFacebook的名字。

在控制器的后台代码中,它看起来像这样:

string[] readPermissions = { "public_profile" };

public override void ViewDidLoad()
{
  base.ViewDidLoad();
  btn.LoginBehavior = LoginBehavior.Native;
  btnFacebook.ReadPermissions = readPermissions;
  // Handle actions once the user is logged in
  btnFacebook.Completed += LoginView_Completed;
  // Handle actions once the user is logged out
  btnFacebook.LoggedOut += LoginView_LoggedOut;
}

private void LoginView_Completed(object sender, LoginButtonCompletedEventArgs e)
{
  if (e.Error != null)
  {
    return;
  }

  if (e.Result.IsCancelled)
  {
    return;
  }
}

private void LoginView_LoggedOut(object sender, EventArgs e)
{

}

要采取适当措施,请清洁溶液并重新编译。 登录按钮在设计器中不会显示为Facebook登录按钮,但在运行时会显示。

至于您的错误,我在您的设计师中看不到任何东西,因此很好奇它给您这样的错误。 打开文档大纲(查看->其他Windows->文档大纲),查看是否有任何不可见的垃圾(未呈现的元素)必须删除。

首先! 您使用了正确的方法来解决问题,其次,我建议您在上图中创建了一个控制器,您需要创建一个View Controller文件,然后添加一个登录屏幕(如名为Textbox的用户名,然后输入一个密码)命名为Textbox和一个登录按钮,然后在保存视图后将自动创建View Controller,然后,最后,通过添加以下代码保存View Controller

partial void login_TouchUpInside(UIButton sender)
    {
        var auth = new OAuth2Authenticator(clientId: "YOUR_CLIENT_ID", scope: "", authorizeUrl: new Uri("https://m.facebook.com/dialog/oauth/"), redirectUrl: new Uri("http://www.facebook.com/connect/login_success.html"));
        auth.Completed += Auth_Completed;
        var ui = auth.GetUI();
        PresentViewController(ui, true, null);

    }

    private async void Auth_Completed(object sender, AuthenticatorCompletedEventArgs e)
    {
        if (e.IsAuthenticated)
        {

            var request = new OAuth2Request("POST", new Uri("YOUR Location Where You want to reach After Login"), null, e.Account);

            //fb://profile/<id> For opening in Facebook App.


        }
        DismissViewController(true, null);
    }

您会看到上面的代码,并且如果要在Facebook应用程序中打开Facebook链接,只需将URL替换为

fb://profile/<id>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM