我几天来一直在研究这个问题,把头发拉了出来。另一个最准确描述我的问题的主题是here,但建议的解决方案对我不起作用。
我正在使用Xamarin Forms创建一个跨平台的移动应用程序,我正在尝试将Facebook登录作为我的用户身份验证手段。我以模态方式呈现登录页面,在每个移动平台项目中以特定于平台的方式呈现页面,并使用Xamarin.Auth API处理大量身份验证。以下snippit来自Android实现:
var activity = Context as Activity;
var authenticator = new OAuth2Authenticator(
clientId: AppConstants.FacebookAppId,
scope: "",
authorizeUrl: AppConstants.FacebookAuthorizeUri,
redirectUrl: AppConstants.FacebookRedirectUri);
authenticator.Completed += async (sender, eventArgs) =>
{
// Check for authentication, call Graph API, deserialize JSON, etc...
};
activity.StartActivity(authenticator.GetUI(activity));
这是基本上每个在线示例提供的样板代码,并且应该呈现Facebook登录页面。但是,在点击我的Facebook登录按钮后,它会以模态方式推送呈现的页面,我得到的就是:
"未登录:您尚未登录。请登录并重试。"
我有两次和三次检查clientId
参数与我的Facebook Developer Console上的Facebook App ID相匹配。我已确保提供给OAuth2Authenticator
对象的重定向和授权URI是正确的。我已将重定向URI添加到我的Facebook Developer Console。使用keytool和openssl找到的我的开发keyhash也是正确的。我的包名和类名(package.name.MainActivity)在控制台中也是正确的(我的项目中的包名是通过双击Android项目手动设置的,转到' Android Manifest'和放入我自己的包名称)。我已经多次从Facebook Developer Console中删除并读取了Android项目。
我的问题是,我可能在这里缺少Xamarin平台的其他任何步骤吗?我真的不知道错误似乎是什么。我很感激有关此事的任何帮助/意见。
提前致谢。
答案 0 :(得分:0)
我设法让这个工作,但解决方案对我没有意义...在Facebook Developer控制台上的有效重定向URI列表中,我回去列出了redirectUrl
和 authorizeUrl
(m.facebook.dialog / oauth和facebook.com/connect/login_success.html)。有些人可能会看到并说:“好吧,呃!”但是我做了很多阅读/研究Facebook提供的文档,以及开发人员博客/视频,而且我没有看到其他任何人放置这两个网址。
因此,我的建议是将开发者控制台中的两个网址作为有效的重定向网址。