错误:没有XAML位于'/ Protocol'C#Facebook SDK位置

时间:2014-05-12 07:08:31

标签: c# facebook facebook-c#-sdk

我是Facebook SDK的新手

使用适用于Windows Phone 8的Facebook上的单一登录SDK时,我在WMAppManifest.xml文件中添加了 <Protocol Name="msft-[AppId]" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" /> 。但是当我运行调试应用程序时,它会显示一个例外

  

“在'/ Protocol'处找不到XAML”

我该怎么做才能解决它

4 个答案:

答案 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> 

check this sample

最后给出了相关的博客链接,请同时查看。

答案 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 ...