【问题标题】:Xamarin Auth Store Keychain not working after ios10 upgradeXamarin Auth Store Keychain 在 ios10 升级后无法正常工作
【发布时间】:2016-09-14 09:47:37
【问题描述】:

我一直在使用 Xamarin.Auth (https://components.xamarin.com/view/xamarin.auth/) 来存储我的凭据。

var accountStore = AccountStore.Create ();
foreach (var account in  accountStore.FindAccountsForService("myAppName"))
    accountStore.Delete (account, "myAppName");

AccountStore.Create().Save(acc, "myAppName");

升级到 iOS 10 后,存储凭据时出现此错误:

"Could not save account to KeyChain: -34018"

at Xamarin.Auth.KeyChainAccountStore.Save (Xamarin.Auth.Account account,System.String serviceId) [0x000b2] in <402cf9b3716845b3bdddef581cb33a3e>:0 

安装的最新版本 1.2.3.1 这个问题似乎只在模拟器上持续存在

【问题讨论】:

  • 这是一个简单的answer,只需在功能中启用钥匙串即可

标签: xamarin xamarin.ios xamarin.auth


【解决方案1】:

我正在浏览评论中发送的 Pat 链接: bugzilla.xamarin.com/show_bug.cgi?id=43514

发现 Pavel Sich 的评论很有帮助,他说:

只需确保您在权利中启用钥匙串访问,并为模拟器(调试)构建选择权利。默认情况下未设置。

在我的 xamarin 解决方案中,我双击 .IOS 项目以打开选项窗格,选择 IOS Bundle Signing 并将 Platform 选择框从“iPhone”更改为“iPhoneSimulator”,然后将字段 Custom Entitlements 设置为我的 Entitlements.plist。现在它对我来说工作正常。

请注意,这是在按照 Thibault D. 在上一个答案中的建议编辑 Entitlement.plist 之后。

希望这会有所帮助。

【讨论】:

  • 非常感谢。我在使用 XCode 8 的 iOS 10 上遇到 Facebook iOS SDK 的问题。stackoverflow.com/questions/38689631/… 你解决了。 :)
  • 先生,我非常感谢您。非常感谢,它就像一个魅力!
  • 与 Visual Studio 和 Xamarin 相同的解决方案
  • 请注意,您应该使用带有苹果创建前缀的完整应用 ID。您可以将其添加为“$(AppIdentifierPrefix)yourAppId”,它会成功stackoverflow.com/a/17624005/3507404
  • 哈哈谢谢,这很奇怪。我今天自己遇到了这个问题并找到了这个答案并在其中看到了我的名字(我完全忘记了这个问题和我的答案)。
【解决方案2】:

根据this thread,在捆绑歌唱配置中添加一个空的权利文件就足够了:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
  ...
  <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

空的Entitlements.plist 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>

【讨论】:

  • 我将此添加到我的 Entitlements.plist... 同样的问题! keychain-access-groupsMyAppID
  • 对我也不起作用。一直在看这个bug...bugzilla.xamarin.com/show_bug.cgi?id=43514
  • 我已经编辑了我的答案,其中包含有关如何获取权利文件以供构建配置使用的说明。
【解决方案3】:

在 ios 项目设置中设置自定义权利

【讨论】:

    【解决方案4】:

    似乎当您在IphoneSimulator 上工作时,即使您在Entitlements.plist 中启用了KeyChain,它仍然不起作用并引发此异常。因为 Xamarin 似乎没有将 IphoneSimulator 配置的 CodesignEntitlements 设置为默认设置,尽管它具有 Iphone 配置。你必须打开你的IOS.csproj 文件并手动添加这一行

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
    
      <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
    </PropertyGroup>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-10
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2020-08-20
      • 2020-05-30
      相关资源
      最近更新 更多