使用jsf获取redirect_uri不是facebook登录时的绝对URI错误

时间:2013-07-11 21:24:54

标签: facebook jsf

我正在尝试将facebook登录与我的网站集成。以下是我的部分代码:

public void socialConnect() throws Exception {
    Properties props = System.getProperties();
    props.put("graph.facebook.com.consumer_key", "561379830565954");
    props.put("graph.facebook.com.consumer_secret", "883e8d729d0358b4040fbffa762d832d");
    props.put("graph.facebook.com.custom_permissions", "publish_stream,email,user_birthday,user_location,offline_access");
    SocialAuthConfig config = SocialAuthConfig.getDefault();
    config.load(props);
    manager = new SocialAuthManager();
    manager.setSocialAuthConfig(config);
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    String successURL = externalContext.getRequestContextPath() + "/socialLoginSuccess.xhtml";
    String authenticationURL = manager.getAuthenticationUrl(providerID, successURL);
    FacesContext.getCurrentInstance().getExternalContext().redirect(authenticationURL);
}

我收到以下错误:

{
  "error": {
    "message": "redirect_uri isn't an absolute URI. Check RFC 3986.",
    "type": "OAuthException",
    "code": 191
  }
}

redirecct_uri应该是什么?我怎么能解决它,任何人都可以帮助吗?

由于

1 个答案:

答案 0 :(得分:3)

您的redirect_uri必须是包含协议(http(s)://),域名,路径等的完全限定网址。

如果您正在编写桌面应用程序,根据How to login / authenticate facebook without browser for desktop application in C#,没有明确支持桌面应用程序,但有一种解决方法(并在该问题中概述)。