国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄

這篇具有很好參考價值的文章主要介紹了Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

首先創(chuàng)建OAuth 2.0 客戶端 ID
Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄,java,狀態(tài)模式,開發(fā)語言
配置url,必須是https的,同時復制好客戶端id 和密鑰

Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄,java,狀態(tài)模式,開發(fā)語言
配置回調(diào)url
Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄,java,狀態(tài)模式,開發(fā)語言

    /**
     * Google授權(quán)登錄跳轉(zhuǎn)。但是會重定向,建議前端跳轉(zhuǎn)
     *
     * 前端js
     * // 構(gòu)建 Google 授權(quán) URL
     * const authParams = new URLSearchParams({
     *   response_type: 'code', //固定
     *   client_id: 'YOUR_CLIENT_ID', // 請將 YOUR_CLIENT_ID 替換為實際的客戶端 ID
     *   scope: 'openid email profile',  //固定
     *   redirect_uri: 'YOUR_REDIRECT_URI', // 在Google配置的回調(diào)url
     * });
     *
     * const authUrl = `https://accounts.google.com/o/oauth2/v2/auth?${authParams}`;
     *
     通過Java接口跳轉(zhuǎn)Google登錄頁面,會重定向,建議前端跳轉(zhuǎn)
     * @param response
     * @return
     * @throws IOException
     */
    @GetMapping("/google-login")
    @NoAuth
    public CommonResult<String> googleLogin(HttpServletResponse response) throws IOException {
        HttpTransport httpTransport = new NetHttpTransport();
        JsonFactory jsonFactory = GsonFactory.getDefaultInstance();

        // 設(shè)置 OAuth 2.0 授權(quán)碼流對象
        AuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, SCOPES)
                .setAccessType("offline")
                .setApprovalPrompt("force") // 可選,強制用戶重新授權(quán)
                .build();

        // 生成用戶授權(quán)的 URL
        AuthorizationCodeRequestUrl authorizationUrl = flow.newAuthorizationUrl()
                .setRedirectUri(REDIRECT_URI);

        // 重定向用戶到授權(quán) URL
        response.sendRedirect(authorizationUrl.build());
        return new CommonResult("success");
    }

回調(diào)接口文章來源地址http://www.zghlxwxcb.cn/news/detail-631809.html

 @GetMapping("/google-callback")
    @NoAuth //不需要登錄
    public ResponseEntity<String> googleCallback(@RequestParam("code") String authorizationCode) throws IOException {
        System.out.println("google-callback code = "+authorizationCode);

        // 創(chuàng)建 Google 授權(quán)碼流對象
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                new NetHttpTransport(),
                JacksonFactory.getDefaultInstance(),
                CLIENT_ID,
                CLIENT_SECRET,
                Arrays.asList("openid", "email", "profile"))
                .setAccessType("offline")
                .build();

        // 交換授權(quán)碼為訪問令牌
        TokenResponse tokenResponse = flow.newTokenRequest(authorizationCode)
                .setRedirectUri(REDIRECT_URI)
                .execute();
        String accessToken = tokenResponse.getAccessToken();

//        System.out.println("google accessToken: "+accessToken);

        String userInfo = getUserInfo(accessToken);
//        System.out.println("userInfo: "+userInfo);
        /** 格式
         * {
         *   "iss": "https://accounts.google.com",
         *   "sub": "123456789012345678901",  表示用戶的唯一標識符,通常是用戶的Google ID。
         *   "aud": "your-client-id",
         *   "email": "user@example.com",
         *   "email_verified": true,
         *   "exp": 1627889766,
         *   "iat": 1627886166
         * }
         */
        JSONObject jsonObject = JSONObject.parseObject(userInfo);
        String email =  jsonObject.getString("email") ;
        //登錄邏輯
        JSONObject userJson = loginByEmail(email);
        String redirectUrl = "https://funflixvideo.com/#/?userId="+userJson.getString("userId")+"&sessionId="+userJson.getString("sessionId");
        // 重定向到 H5 頁面,并帶上 session ID
        HttpHeaders headers = new HttpHeaders();
        headers.setLocation(URI.create(redirectUrl));
        return new ResponseEntity<>(headers, HttpStatus.FOUND);
    }
    
    //獲取用戶信息
 public  String getUserInfo(String accessToken) {

        String url = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + accessToken;
        try {
            return HttpClient4Utils.httpGet(url, null, "utf-8", 30);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

到了這里,關(guān)于Java實現(xiàn)Google授權(quán)登錄,OAuth 2.0登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • OAuth 2.0 授權(quán)認證詳解

    OAuth 2.0 授權(quán)認證詳解

    1.1 OAuth 2.0 應(yīng)用場景 OAuth 2.0 標準目前被廣泛應(yīng)用在第三方登錄場景中,以下是虛擬出來的角色,闡述 OAuth2 能幫我們干什么,引用阮一峰這篇理解OAuth 2.0中的例子: 有一個\\\"云沖印\\\"的網(wǎng)站,可以將用戶儲存在Google的照片,沖印出來。用戶為了使用該服務(wù),必須讓\\\"云沖印\\\"讀取

    2024年02月04日
    瀏覽(25)
  • OAuth 2.0(Open Authorization 2.0)授權(quán)框架入門介紹

    OAuth 2.0-01-Overview OAuth2-02-java 整合 OAuth2-03-springboot 整合 OAuth 2.0(Open Authorization 2.0)是一種授權(quán)框架,允許第三方應(yīng)用程序訪問用戶在另一個服務(wù)提供者上托管的資源,而無需共享用戶的憑據(jù)(例如用戶名和密碼)。 它已成為許多網(wǎng)絡(luò)服務(wù)的標準授權(quán)協(xié)議,包括社交媒體平臺

    2024年04月08日
    瀏覽(19)
  • Spring Boot 最新版3.x 集成 OAuth 2.0實現(xiàn)認證授權(quán)服務(wù)、第三方應(yīng)用客戶端以及資源服務(wù)

    Spring Boot 最新版3.x 集成 OAuth 2.0實現(xiàn)認證授權(quán)服務(wù)、第三方應(yīng)用客戶端以及資源服務(wù)

    Spring Boot 3 已經(jīng)發(fā)布一段時間,網(wǎng)上關(guān)于 Spring Boot 3 的資料不是很多,本著對新技術(shù)的熱情,學習和研究了大量 Spring Boot 3 新功能和新特性,感興趣的同學可以參考 Spring 官方資料全面詳細的新功能/新改進介紹 Spring 版本升級到6.x JDK版本至少17+ … 新特性有很多,本文主要針對

    2024年02月02日
    瀏覽(97)
  • 實現(xiàn) Google 第三方授權(quán)登錄

    實現(xiàn) Google 第三方授權(quán)登錄

    最近做項目要實現(xiàn)Google的第三方登錄,這簡單的記錄一下。 目前Google的第三方登錄有很多方案,且官方提供SDK方便接入。但是我這個項目同時要實現(xiàn)網(wǎng)頁和客戶端。所以選擇了?Google OAuth 2.0?的方案。 當然,也可以?《實現(xiàn) Facebook 第三方授權(quán)登錄》 Google 的 OAuth 2.0 流程 首先

    2024年02月09日
    瀏覽(23)
  • oauth2.0第2季 分布式認證與授權(quán)實現(xiàn)單點登錄

    oauth2.0第2季 分布式認證與授權(quán)實現(xiàn)單點登錄

    1.使用jwttoken進行令牌傳輸,資源服務(wù)器在本地怎么驗證token? 1.1.1 oauth是什么 1.1.2?oauth的角色 1.1.3?oauth的認證流程 1.1.4?oauth的4種模式 1.介紹單體架構(gòu)? 使用sesion保存會話信息的情況 2.前后端分離項目,調(diào)用方式 session架構(gòu)不適合前后端分離項目 3.解決辦法,引出oauth2.0 配置

    2024年02月11日
    瀏覽(22)
  • 【授權(quán)與認證】OAuth 2.0 和 OIDC 的異同點

    【授權(quán)與認證】OAuth 2.0 和 OIDC 的異同點

    開發(fā)者談 | OAuth 2.0 和 OIDC 協(xié)議的關(guān)系?(內(nèi)含必看案例) 【W(wǎng)eb 安全】CSRF 攻擊詳解 OAuth 2.0 的一個簡單解釋 OAuth 2.0 的四種方式 什么是Oauth2.0,Oauth2.0的四種授權(quán)模式 簡單說,OAuth 就是一種授權(quán)機制。數(shù)據(jù)的所有者告訴系統(tǒng),同意授權(quán)第三方應(yīng)用進入系統(tǒng),獲取這些數(shù)據(jù)。系

    2024年01月17日
    瀏覽(22)
  • H5使用微信OAuth2.0授權(quán)登錄,并實現(xiàn)內(nèi)網(wǎng)調(diào)試。

    H5使用微信OAuth2.0授權(quán)登錄,并實現(xiàn)內(nèi)網(wǎng)調(diào)試。

    H5實現(xiàn)微信授權(quán)登錄的流程不在過多贅述官方文檔傳送門,下面直接上如何在開發(fā)狀態(tài)下實現(xiàn)授權(quán)登錄調(diào)試。 微信公眾號的開發(fā)權(quán)限,配置后續(xù)會講。 內(nèi)網(wǎng)穿透工具。 一個node服務(wù)點這里koa2快速搭建,傳送門。 如圖所示點擊網(wǎng)頁授權(quán)域名設(shè)置 將這個文件txt下載到本地,下面

    2024年02月16日
    瀏覽(20)
  • 基于Next14+Auth5實現(xiàn)Github、Google、Gitee平臺授權(quán)登錄和郵箱密碼登錄

    基于Next14+Auth5實現(xiàn)Github、Google、Gitee平臺授權(quán)登錄和郵箱密碼登錄

    后面打算自己做一個獨立產(chǎn)品,產(chǎn)品需要用到服務(wù)端渲染,而我比較擅長React,所以最近在學Next14。 剛開始學的時候,因為自己英文不好,中文文檔又特別少,踩了不少坑。后面買了冴羽大佬的Next小冊跟著學習,很快就上手了,小冊質(zhì)量很高,個人覺得很適合新手入門。 學

    2024年04月15日
    瀏覽(19)
  • 微信小程序——單點登錄,OAuth 2.0,openid

    單點登錄 (Single Sign-On,簡稱SSO)是一種身份認證的機制,允許用戶在多個應(yīng)用程序之間只需進行一次登錄,即可訪問所有相互信任的應(yīng)用程序,而無需再次輸入用戶名和密碼。SSO可以提供更好的用戶體驗和簡化的身份驗證流程。 OAuth 2.0 是一種開放標準的授權(quán)協(xié)議,用于授

    2024年02月07日
    瀏覽(93)
  • java實現(xiàn)狀態(tài)模式

    狀態(tài)模式是一種行為設(shè)計模式,它允許對象在內(nèi)部狀態(tài)改變時改變其行為。在狀態(tài)模式中,對象將其行為委托給表示不同狀態(tài)的狀態(tài)對象,這些狀態(tài)對象負責管理其行為。以下是在 Java 中實現(xiàn)狀態(tài)模式的一般步驟: 創(chuàng)建一個狀態(tài)接口(State):該接口定義了具體狀態(tài)類必須實

    2024年02月09日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包