将Xamarin应用程序与Facebook SSO与Facebook iOS App集成

时间:2014-02-19 14:04:12

标签: ios facebook xamarin.ios xamarin

我正在编写一个Xamarin iOS应用程序并且难以集成Facebook SSO,但我认为我的问题不一定是特定于Xamarin,只是缺乏对如何在没有Facebook iOS SDK的情况下整合Facebook SSO的理解

我已按照各种指南进行了以下操作:

1)设置Facebook应用程序: a)iOS平台添加了与我的应用程序的包ID匹配的包ID b)启用单点登录

2)按如下方式设置我的info.plist:     info.plist

raw text:

<key>CFBundleDisplayName</key>
<string>[company]</string>
<key>CFBundleIdentifier</key>
<string>com.[company].ios.app</string>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb123490xxx</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.[company].ios.app</string>
    </dict>
</array>
<key>FacebookAppID</key>
<string>123490xxx</string>
<key>FacebookDisplayName</key>
<string>[company] Staging</string>

3)在我的应用程序中实现了以下代码:

FacebookLoginButton.TouchUpInside += (sender, e) => 
        {
            var urlWithAppProtocol = new NSUrl("fb123490xxx://");
            UIApplication.SharedApplication.OpenUrl(urlWithAppProtocol);
        };

我还没有覆盖AppDelegates方法(OpenUrl和HandleOpenUrl),因为据我所知,那些处理传入重定向到我的应用程序;接下来我会继续工作。

要明确的是,我期待看到的是FB iOS App与此屏幕相当(来自Mobile Safari) mobile safari

但是,如果我重定向到:
“fb:// [appid]”我被重定向到FB应用程序,但只是重定向到新闻供稿页面(或者我在使用FB应用程序时最后一个屏幕)

“fb [appid]://”我什么都没发生,.OpenUrl()什么都不做;

“fb://个人资料/ [appid]”作为实验,我得到以下内容(请注意“应用不适用于您的手机”);这可能是因为你应该使用带有/ profile的PageID。

profile

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

好的,最后它只是将fbauth://authorize与oauth url中的普通查询字符串参数结合使用。重定向网址必须为fbconnect://success

我通过阅读FB iOS SDK的源代码找到了这个:

https://github.com/keithpitt/DKSocial/blob/72cd77bc15ca1a307b92aff8382f2c71a97da7de/External/FBConnect/Facebook.m

这里可能有一个教训是使用官方Facebook iOS SDK的Xamarin绑定,它提供此功能。我最终走下了手动路线,因为我开始使用Facebook .NET SDK,它似乎不提供这种基于应用程序的SSO功能。