1

Google App Engine の openID ログインを作成しました。

static {
        openIdProviders = new HashMap<String, String>();
        openIdProviders.put("Google", "https://www.google.com/accounts/o8/id");
        openIdProviders.put("Yahoo", "yahoo.com");
    }

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        UserService userService = UserServiceFactory.getUserService();

        User user = userService.getCurrentUser(); // or req.getUserPrincipal()
        Set<String> attributes = new HashSet();

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();

        if (user != null) {
            out.println("Hello <i>" + user.getNickname() + "</i>!");
            out.println("[<a href=\"" + userService.createLogoutURL(req.getRequestURI())+ "\">sign out</a>]");
        } else {
            out.println("Sign in at: ");
            for (String providerName : openIdProviders.keySet()) {
                String providerUrl = openIdProviders.get(providerName);
                String loginUrl = userService.createLoginURL(req.getRequestURI(), null, providerUrl, attributes);
                out.println("[<a href=\"" + loginUrl + "\">" + providerName+ "</a>] ");
            }
        }
    }

アプリをデプロイすると、すべてがうまく機能します。問題はありません。openID プロバイダーを選択すると、そのページにリダイレクトされます。

sample.appspot.com/_ah/login_redir?claimid=[OPen ID provider]=[my sample page]/_ah/login_required

それが私のサーブレットです。

 <servlet>
        <servlet-name>Authorization</servlet-name>
        <servlet-class>ge.eid.test.Authorization</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Authorization</servlet-name>
        <url-pattern>/_ah/login_required</url-pattern>
    </servlet-mapping>

わかった。すべて順調!しかし、localhost でサンプル アプリを実行すると、別のリダイレクト URL が表示されます。

http://localhost:8888/_ah/login?continue=/F_ah/Flogin_required

だから私はOpenIDログインを持っていません。私はそのようなものを持っています:

ここに画像の説明を入力 質問 1) localhost でも openID ログインを作成する方法。

4

1 に答える 1

2

これは正常な動作です。なぜなら、localhost では多くの異なるアカウントを試したいかもしれず、実際に毎回実際のアカウントでログインしなければならない場合は混乱するからです。したがって、ローカルホストでは、必要なメールを提供し、管理者になりたいかどうかを確認するだけで、OpenID ユーザーをシミュレートできます。

于 2013-08-26T10:01:09.617 に答える