我是Facebook SDK的新手
使用适用于Windows Phone 8的Facebook上的单一登录SDK时,我在WMAppManifest.xml文件中添加了 <Protocol Name="msft-[AppId]" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
。但是当我运行调试应用程序时,它会显示一个例外
“在'/ Protocol'处找不到XAML”
我该怎么做才能解决它
答案 0 :(得分:2)
首先,我认为协议名称属性不正确。基于MSDN有关协议名称:自定义URI方案中的前缀。长度在2到39个字符之间的字符串,包含数字,小写字母,句点('。')或连字符(' - ')。不要包含冒号(':')或URI中前缀之后的任何其他内容。
除了我相信你,你正试图在一个不存在的uri中导航。我建议你打破自定义uri映射器的构造函数。你应该有一个类似于这个
的类public class CustomUriMapper: UriMapperBase
{
public override Uri MapUri(Uri uri)
{
// Break into this point to detect the incoming uri and be sure
// to return a valid xaml page if tempuri contains your protocol name
string tempUri = uri.ToString();
string mappedUri = string.Empty;
// Search for a specific deep link URI keyword
if (tempUri.Contains("msftappid"))
{
// Launch to the mainpage xaml.
return new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute);
}
// Otherwise perform normal launch.
Debug.WriteLine("Normal launch detection");
return uri;
}
}
进入构造函数以检测传入的uri,如果tempuri包含您的协议名称,请确保返回有效的xaml页面。在您的示例中,msft- [AppId]应为 msftappid 。
答案 1 :(得分:1)
在这样的扩展名下添加协议:
<Extensions>
<Protocol Name="msft-[AppId]" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>
最后给出了相关的博客链接,请同时查看。
答案 2 :(得分:1)
转到App.xaml.cs并进入InitializePhoneApplication()插入此代码:
RootFrame.UriMapper = new CallbackUriMapper();
您需要这个来初始化回调类。 (CallbackUriMapper()就是一个例子。只需将您应用的名称添加到该类中。)
答案 3 :(得分:0)
首先,FB beta应用程序正在正确调用您的应用程序..并且您的App.xaml.cs不知道重定向控件的位置...因此错误。
Sol:
我。添加此行
RootFrame.UriMapper = new ContosoCallbackUriMapper();
在方法 InitializePhoneApplication ()中的 App.xaml.cs 文件旁边。
II。从MSDN页面下载的示例示例中导入此类文件ContosoCallbackUriMapper.cs。LINK HERE
并将其添加到项目级别。
它应该可以正常工作..
如果读取代码...步骤1告诉使用此类进行任何URI映射,n步骤2告诉如果State已通过身份验证,则将用户重定向到Main.xaml ...