0

こんにちは 2 私はチュートリアルのようにすべての人を作ります。しかし、私は access_Token の取得を停止しました。これは、Facebookにリダイレクトする私のコードです。

@RequestMapping(method = RequestMethod.GET)
public void process(/*
                     * @ModelAttribute("user") User user, BindingResult
                     * result Model model,
                     */HttpServletRequest request, HttpServletResponse response) {
    FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory("240362226072898", "657532dea6d091ab44a56668c47cca15");
    OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();
    OAuth2Parameters params = new OAuth2Parameters("http://localhost:8080/shop/facebook");
    String authorizeUrl = oauthOperations.buildAuthorizeUrl(GrantType.IMPLICIT_GRANT, params);

    try {
        response.sendRedirect(authorizeUrl);
        LOG.error("ALL WORKING FINE>>>");
    } catch (IOException e) {
        LOG.error("Errorrrrr" + e);
    }

その後、他のコントローラーで。/facebook にマッピングされた URL を受け取りましたが、URL の最後にパラメータの原因が見つかりません #. お気に入り

http://localhost:8080/shop/facebook#access_token=.......&expires_in=6277

「#」をカットして「?」を貼り付けたら そこですべてがうまくいく

これは、この URL を受け取るコントローラーです。

@Controller
@RequestMapping(value = "/facebook")
public class FacebookController {
    private static final Logger LOG = Logger.getLogger(FacebookController.class);

    @RequestMapping(method = RequestMethod.GET) 
    public void getAuthorisation(@RequestParam String access_token, HttpServletResponse response, HttpServletRequest request) {

        LOG.error("Access token"+access_token);
/*      LOG.error(request.getAttribute("access_token"));
        LOG.error(request.getParameter("access_token"));
*/      
    }
}
4

1 に答える 1

2

Javascript を使用してURI フラグメントからアクセス トークンを抽出します。

クライアント側フローのドキュメントを参照してください。

ユーザーがアプリケーションを承認することを選択した場合、ユーザーは次の場所にリダイレクトされます。

YOUR_REDIRECT_URI#access_token=USER_ACCESS_TOKEN&expires_in=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES

サーバー側のフローとは異なり、アクセス トークンは URL フラグメントで redirect_uri に渡されるため、Javascript を介してアプリケーションでのみ使用できることに注意してください。

于 2012-06-21T10:37:36.993 に答える