如何使用Spring Social退出Facebook

3

我在尝试使用Spring Social中的Facebook API实现注销按钮时遇到了问题。

要注销,我是否需要像下面登录按钮那样调用URL?

我能够通过调用URL '/connect/facebook' 来实现登录,如下所示:

<form action="/connect/facebook" method="POST">
    <input type="hidden" name="scope" value="read_stream,email" />
    <md-button type="submit">
        <i class="fa fa-facebook-square"></i> Login
    </md-button>
</form>

我还将ConnectController扩展为将用户重定向到主页:

@Controller
public class FacebookController extends ConnectController {

    @Inject
    public FacebookController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }

    @Override
    protected String connectedView(String providerId){
        return "redirect:/";
    }

}

我正在使用AngularJS来获取用户信息,如果已连接,下面是我的服务负责处理:

function login() {
    var request = $http({
        method: "GET",
        url: "/home/user"
    });

    return (request.then(handleSuccess, handleError));
}

并且后端有一个REST控制器来查找或注册用户:

@RestController
public class LoginController {

    @Autowired
    private Facebook facebook;

    @Autowired
    private UsrService usrService;

    @RequestMapping(value = "/home/user", method = RequestMethod.GET)
    public Usr findUser() {
        Usr user;

        if (!facebook.isAuthorized()) {
            return null;
        }

        String name = facebook.userOperations().getUserProfile().getName();
        String email = facebook.userOperations().getUserProfile().getEmail();
        byte[] avatar = facebook.userOperations().getUserProfileImage(ImageType.SQUARE);

        user = usrService.find(email);

        // saves the new user
        if (user == null) {
            user = new Usr(email, name, avatar, 0);
            user.setName(name);
            user.setAvatar(avatar);
            user.setLikes(0);
            usrService.save(user);
        }

        return user;
    }
}

我没有找到与我实现的登录方式相似的解决方案,我还在github上检查了spring-social示例,但它们的实现与我的相当不同。

谢谢。

1个回答

3

对于那些可能遇到与我同样问题的人:

我仔细查看了spring social文档,并发现我只需要在'/connect/facebook'处进行DELETE请求。

这可以在4.3.4章节中找到。


如果您遇到了“没有映射找到HTTP请求/连接/facebook”等问题,您可以尝试将以下ConnectController放入您的dispatcher-servlet.xml中:<beans:bean class="org.springframework.social.connect.web.ConnectController"></beans:bean>。 - Yuci
这只是断开应用与Facebook的连接还是完全注销用户的Facebook账户? 也就是说,如果用户访问www.facebook.com,用户会被要求重新登录吗? 我正在寻找一种可以完全注销用户的Facebook账户的解决方案。 - dozer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接