2013-04-09 4 views
1

Привет всем, у меня есть проблема с подключением facebook, я использую этот API, чтобы пользователи могли войти в мое веб-приложение, используя свою учетную запись facebook, как предыдущую шаг я получаю идентификатор приложения и секрет APP от developers.facebook, проблема в том, что логин не аутентифицирует учетную запись, кроме той, которую я использую, когда я делаю идентификатор приложения и секрет приложения, пожалуйста, помогите мне в понимании этой проблемы.Являются ли facebook App ID и App Secret конкретными для каждого пользователя, использующего facebook connect

Примечание: Я использую эти tutorials интегрировать мой веб-приложение с Facebook Connect

для большей ясности, это стартовая страница JSF (исходный код доступен в ссылке м entioned в моем посте):

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:p="http://primefaces.org/ui" 
xmlns:f="http://java.sun.com/jsf/core"> 
<h:head> 
</h:head> 
<h:body> 
    <h1>Login Page</h1> 
    <h:form id="loginForm"> 
     <p:button value="Facebook Connect" href="#{loginPageCode.facebookUrlAuth}" /> 
     <br/><br/> 
     <h:outputText value="#{loginPageCode.userFromSession}"></h:outputText> 
    </h:form> 
</h:body> 

и это управляемый компонент:

@ManagedBean(name = "loginPageCode") 
@SessionScoped 
public class LoginPageCode implements Serializable { 
private static final long serialVersionUID = -1611162265998907599L; 

public String getFacebookUrlAuth() { 
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance() 
      .getExternalContext().getSession(false); 
    String sessionId = session.getId(); 
    String appId = "3827326728372872"; 
    String redirectUrl = "http://localhost:8080/Test/index.sec"; 
    String returnValue = "https://www.facebook.com/dialog/oauth?client_id=" 
      + appId + "&redirect_uri=" + redirectUrl 
      + "&scope=email,user_birthday&state=" + sessionId; 
    System.out.println("Return Value---->"+returnValue); 
    return returnValue; 
} 

public String getUserFromSession() { 
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance() 
      .getExternalContext().getSession(false); 
    String userName = (String) session.getAttribute("FACEBOOK_USER"); 
    System.out.println("FACEBOOK_USER-->"+userName); 
    if (userName != null) { 
     return "Hello " + userName; 
    } else { 
     return ""; 
    } 
} 
} 

ответ

1

Чтобы ответить на этот вопрос в заголовке -
Нет, идентификатор приложения и секрет являетесь для любого пользователя.

Проблема здесь (я предполагаю) заключается в том, что ваше приложение находится в режиме песочницы. Отключите этот режим, и все должно работать.

Режим «Песочница» предназначен для использования во время разработки приложения, и только пользователи, указанные в разделе «Роли» параметров приложения, смогут получить доступ к приложению.

+0

i отключил режим песочницы, и он по-прежнему настаивает на аутентификации только учетной записи, которую я использовал для создания идентификатора приложения! я действительно удивлен –

+0

@jav - проблемы, когда только определенные * пользователи * не могут выполнять задачи, обычно связаны с настройкой режима песочницы. Единственная проблема, которую я мог себе представить, это то, что у вас есть ошибка в вашем коде; Но это не кажется вероятным, поскольку вы говорите, что это * работает * для учетной записи, которая создала приложение. Не могли бы вы добавить к своему вопросу выше какой-либо соответствующий код, который касается процесса auth? – Lix

+0

Я использую приложение в учебнике, упомянутом в моем сообщении –

Смежные вопросы