我正在使用xamarin.forms PCL Project有两个项目android和IOS
我已将facebook集成到我的项目中。
我在facebook sdk中通过了三个权限public_profile
,email
,user_birthday
。
当我尝试通过Facebook登录时,Facebook权限对话框页面打开,但它要求仅接受两个权限email
,public_profile
,不要求user_birthday
权限
以下是我的代码:
public class FacebookLoginButtonRenderer : ButtonRenderer,IFacebook
{
private static Activity _activity;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
_activity = this.Context as Activity;
if (this.Control != null)
{
Android.Widget.Button button = this.Control;
button.SetOnClickListener(ButtonClickListener.Instance.Value);
}
}
void IFacebook.Logout()
{
LoginManager.Instance.LogOut();
}
private class ButtonClickListener : Object, IOnClickListener
{
public static readonly Lazy<ButtonClickListener> Instance = new Lazy<ButtonClickListener>(() => new ButtonClickListener());
public void OnClick(View v)
{
LoginManager.Instance.LogInWithReadPermissions(_activity, new List<string> { "public_profile","email","user_birthday"});
}
}
}
FacebookClient fb = new FacebookClient(AccessToken);
fb.GetTaskAsync("me?fields=id,email,first_name,last_name,gender,birthday").ContinueWith(t =>
{
if (!t.IsFaulted)
{
var obj = (IDictionary<string, object>)t.Result;
}
});
在登录权限对话框中,不要求生日,如下图所示
请建议如何解决此问题
提前致谢
答案 0 :(得分:1)
从图谱API的v2.0开始,就不可能再获得朋友生日了。您只能使用user_birthday权限获取授权用户的生日。有关详细信息,请参阅更改日志:https://developers.facebook.com/docs/apps/changelog
只有另一种可能性:如果朋友使用user_birthday授权应用程序,您可以通过以下调用获得他的生日:/ friend-id?fields = birthday
当然,您还需要使用user_friends授权用户,以便使其工作。您还可以存储所有授权用户的生日,不要浪费额外的API调用。 检查一下:
答案 1 :(得分:0)
更改user_birthday的生日和user_gender的性别,然后按照https://developers.facebook.com/docs/facebook-login/review
上的说明提交应用以查看权限