Xamarin.iOS 的 Google 登入

在 Xamarin.iOS 開發中,使用Google 帳號進行登入,十分簡單。
只要引入 Xamarin 為 Google Single-SignIn 開發的 Component 即可。

首先在專案的 Components 目錄下引入「Google Sign-In for iOS」

然後只要幾行code就可以完成Google Sin-In 的工作。
真正的問題在Server端的設置。

首先到 https://developers.google.com/mobile/add 這邊增加 iOS App
給出 App name 和 bundle id
然後再下一個頁面增加 Google Sign-In 的功能。

接下來是要記得產生設定檔案
然後下載 GoogleService-Info.plst 檔案,加入至專案。

然後在專案總管這邊,Build Action 選成 BundleResource 。

在 Info.plist 這邊要做兩件事情
新增 CFBundleURLTypes 讓 Google 可以辨識

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLTypes</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>填入REVERSE_CLIENT_ID,去GoogleService-Info.plist 內找出來</string>
            </array>
        </dict>
        <dict>
            <key>CFBundleURLTypes</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>在Google 開發者網站填的Bundle Id</string>
            </array>
        </dict>
    </array>

做到這邊,關於設定的工作就做好了。

而程式碼分成兩部分。
皆需要引用以下的 namespace

using Google.Core;
using Google.SignIn;

在 AppDelegate.cs 內

public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)

需要加上這段 Code 讀取 ClientID ,這邊需要去 GoogleService-Info.plist 複製 CLIENT_ID 出來。

NSError configureError;
Context.SharedInstance.Configure (out configureError);
if (configureError != null) {
  Console.WriteLine ("Error configuring the Google context: {0}", configureError);
  SignIn.SharedInstance.ClientID = "要去GoogleService-Info.plist 取得 CLIENT_ID";
}

加上 OpenURl 的處理

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
  return SignIn.SharedInstance.HandleUrl (url, sourceApplication, annotation);
}

另外的目標 ViewController 內加入以下的程式碼

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    SignIn.SharedInstance.UIDelegate = this;

    SignIn.SharedInstance.SignedIn += (object sender, SignInDelegateEventArgs e) => {

        if (e.User != null && e.Error == null) {
            Debug.WriteLine(e.User.Profile.Name);
        }
    };

    SignIn.SharedInstance.Disconnected += (object sender, SignInDelegateEventArgs e) => {

        if (e.User != null && e.Error == null) {
            Debug.WriteLine(e.User.Profile.Name);
        }

    };

    SignIn.SharedInstance.SignInUserSilently ();

}

在這邊我們只要留意三個方法即可

SignIn.SharedInstance.SignInUser ();
SignIn.SharedInstance.SignOutUser ();
SignIn.SharedInstance.DisconnectUser ();

分別用於登入,登出和解除予應用程式的授權。

參考資料:Google Sign-In for iOS 的說明。

时间: 2024-10-01 02:50:07

Xamarin.iOS 的 Google 登入的相关文章

Visual Studio + C# + Xamarin = iOS/Android/Windows Apps

Visual Studio 跨平台開發實戰 (1) -- Hello Xamarin! 前言 應用程式發展的腳步,從來沒有停過.從早期的 Windows 應用程式, 到網路時代的 web 應用程式,再到近幾年相當盛行的行動裝置應用程式 (Mobile Application),身為 C# 的開發人員與 Visual Studio 的使用者,除了開發 Windows Phone 與 Windows Store App 外,如果能夠讓你使用 C# 及 Visual Studio 熟悉的開發環境來開發

iOS开发——实用篇Swift篇&amp;QQ登入界面实现

我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自己就照着手机上面APP自己比较好奇的界面实现了一下,今天分享一下关于QQ登入界面,完全纯代码,实用StoryBoar太麻烦,个人比较喜欢用代码实现,而几乎所有登入界面几乎都是一样的,只是图标不同,或者还会有其他的拓展功能,不过这里都会了其他的纳豆不是事儿. 废话不多说,直接上代码 import UIKit class

Xamarin.IOS之多视图

继上节<Xamarin.IOS之快速入门>之后,本节将会在此基础之上具体扩展,主要是增加一个列表可以提供历史拨打电话的记录.下面我们直接进入正题. 首先打开MainStoryboard.storyboard,我们在这个基础之上继续修改.从工具栏中拖放一个Navigation Controller到故事板中,然后我们可以看到如下所示: 但是当前的主视图控制器还是之前的,我们需要将新的设置为主视图,所以我们要将拖放到下面这个视图控制器,然后我们还需要删除Navigation Controller所

Xamarin.iOS开发初体验

Xamarin是一个跨平台开发框架,这一框架的特点是支持用C#开发IOS.Android.Windows Phone和Mac应用,这套框架底层是用Mono实现的. Mono是一款基于.NET框架的开源工程,包含C#语言编译器.CLR运行时和一组类库,能运行于Windows.Linux.Unix.Mac OS和Solaris.对于.NET程序员来说,Xamarin是走向安卓.iOS.Mac跨平台开发的神器,不仅能用熟悉的C#来开发,还能使用Visual Studio作为IDE.本文内容是Xamar

Xamarin.IOS之快速入门

本人利用业余的时间编写了关于Xamarin.Android的基础教程,获得了很多人的支持.但是笔者打心里想说的就是这个教程所能提供的知识太有限了,等笔者到新的工作后,会开始抓紧时间写一些实战开发中运用的技术以及技巧.现在笔者带着大家进入Xamarin.IOS的入门教程. 关于环境 如果读者是破解的,那么mac这边的破解可能会伤脑筋,笔者使用的商业版的账号.当然我这里建议大家可以到淘宝购买,其实商业版如果以学校机构购买很便宜的.关于环境的讲解就到这吧,下面开始正题(这里推荐一个比较好的QQ群[23

Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结

Identity学习笔记 Asp.Net Identity学习笔记+MVC5默认项目解析_基础用法 Asp.Net Identity学习笔记+MVC5默认项目解析_授权&Claim Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结 Identity学习笔记第三方登入配置登入案例登入技术总结本地,已登入本地,未登入第三方登入 第三方登入 本文介绍Identity的第三方登入技术.到目前为止只介绍了CookieAuthentication这种授权方式,即浏览

ipv6设置以及登入

由于ipv4的使用不够,新一代的ipv6慢慢的开始流行,而登入ipv6的方法是在cmd窗口输入ipv6 install,进而电脑系统将会installing,最后就会成功suceeded.值得指出的是,此时候便会通过其上网浏览了,其通过ipv6.google.com/便会登入google.这时候就会有许多网站资源应用的,也有网站可以测试以及速度的验证.另外,这时候如果需要登录youtube的网站,还是需要通过一些翻墙软件才能登录的.在使用ipv6的情况下,其google就可以进行wikipedi

Xamarin iOS教程之申请付费开发者账号下载证书

Xamarin iOS教程之申请付费开发者账号下载证书 Xamarin iOS使用真机测试应用程序 在讲解iOS Simulator时,已经提到了虽然iOS Simulator可以模仿真实的设备,但是还是有很多的缺陷,如打电话.发送SMS信息.获取位置数据等.如果想要实现iOS Simulator实现不了的功能,就需要使用真机对应用程序进行测试.本节将讲解如何使用真机对应用程序进行测试. Xamarin iOS申请付费开发者账号 使用真机测试,需要申请和下载证书.对于证书的申请和下载必须成为一个

python获取淘宝登入cookies

重点:去新浪微博登入接口登入 一.代码 # coding=utf-8 import requests from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC import time, random from selenium import webdriver from selenium.webdriver.support.wait im