我创建了Windows Phone应用程序(WinRT for 8.1+,而不是Silverlight)。我已经添加了Facebook 6.0.10.0和Facebook.Client 0.9.1.0以及Nuget管理器(而不是Github构建),并且已经将“FacebookConfig.xml”添加到项目中,内容如http://facebooksdk.net/docs/windows/config/中所述,fb [ Facebook-app-id]将Package.appxmanifest作为声明中的协议并覆盖App.xaml.cs中的OnActivated。
protected override void OnActivated(IActivatedEventArgs args)
{
base.OnActivated(args);
Session.OnFacebookAuthenticationFinished += OnFacebookAuthenticationFinished;
var protocolArgs = args as ProtocolActivatedEventArgs;
LifecycleHelper.FacebookAuthenticationReceived(protocolArgs);
使用事件处理程序
private void OnFacebookAuthenticationFinished(AccessTokenData session)
{
Debug.WriteLine("OnFacebookAuthenticationFinished");
}
在我创建LoginButton的主页面上:
<controls:LoginButton x:Name="FacebookLoginButton"
Height="70"
Margin="5"
HorizontalAlignment="Stretch"
FetchUserInfo="True"
LoginBehavior="LoginBehaviorApplicationOnly"
Opacity="0"
Permissions="email, public_profile"
SessionStateChanged="LoginButton_OnSessionStateChanged"
Visibility="Visible" />
使用SessionStateChanged的事件hendler
private void LoginButton_OnSessionStateChanged(object sender, SessionStateChangedEventArgs e)
{
Debug.WriteLine(e.SessionState);
}
文档中的按钮示例似乎已过时,因为ApplicationId不再是LoginButton的字段,我已经在stackoverflow上找到了对它的确认,但逻辑应该仍然可以正常工作。我的工作很棒,与LoginBehavior =“LoginBehaviorWebViewOnly”完全一样。但是当LoginBehavior设置为LoginBehaviorApplicationOnly时,会发生事件SessionStateChanged在打开facebook状态为“Opening”之前触发一次,Facebook应用程序打开允许您输入凭据,显示加载屏幕,关闭并返回到我的应用程序登录按钮屏幕。奇怪的是,没有任何类型的“权限确认对话”,并且在返回我的应用程序之后没有事件被触发。从App.xaml.cs开始,LoginButton的SessionStateChanged和OnFacebookAuthenticationFinished都没有。
调试输出给出错误:
Error: BindingExpression path error: 'ApplicationId' property not found on 'Facebook.Client.Controls.LoginButton'. BindingExpression: Path='ApplicationId' DataItem='Facebook.Client.Controls.LoginButton'; target element is 'Windows.UI.Xaml.Controls.Button' (Name='PART_LoginButton'); target property is 'IsEnabled' (type 'Boolean')
请原谅我的奇怪语法和所有错误,因为英语不是我的母语。
答案 0 :(得分:0)
“ApplicationId”不再是我所知道的有效参数。查看http://facebooksdk.net/docs/phone/config/了解更多详情。您必须添加facebookconfig.xml并配置清单。