美文网首页开发组件
组件分享之后端组件——一个OAuth2.0的客户端

组件分享之后端组件——一个OAuth2.0的客户端

作者: cn華少 | 来源:发表于2022-04-28 19:56 被阅读0次

    组件分享之后端组件——一个OAuth2.0的客户端

    背景

    近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

    组件基本信息

    内容

    本节我们分享一个OAuth2.0的客户端oauth2,当然还有很多的oauth客户端,大家在使用的时候可以进行快速选择自己想要的,想要了解更多的组件可以持续关注我。
    以下是该客户端的具体使用方法:
    1、安装

    go get github.com/cristalhq/oauth2
    

    2、使用

    config := oauth2.Config{
        ClientID:     "YOUR_CLIENT_ID",
        ClientSecret: "YOUR_CLIENT_SECRET",
        AuthURL:      "https://provider.com/o/oauth2/auth",
        TokenURL:     "https://provider.com/o/oauth2/token",
        Scopes:       []string{"email", "avatar"},
    }
    
    // create a client
    client := oauth2.NewClient(http.DefaultClient, config)
    
    // url to fetch the code
    url := client.AuthCodeURL("state")
    fmt.Printf("Visit the URL for the auth dialog: %v", url)
    
    // Use the authorization code that is pushed to the redirect URL.
    // Exchange will do the handshake to retrieve the initial access token.
    var code string
    if _, err := fmt.Scan(&code); err != nil {
        log.Fatal(err)
    }
    
    // get a token
    token, err := client.Exchange(context.Background(), code)
    if err != nil {
        panic(err)
    }
    
    var _ string = token.AccessToken  // OAuth2 token
    var _ string = token.TokenType    // type of the token
    var _ string = token.RefreshToken // token for a refresh
    var _ time.Time = token.Expiry    // token expiration time
    var _ bool = token.IsExpired()    // have token expired?
    
    本文声明:
    88x31.png
    知识共享许可协议
    本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

    相关文章

      网友评论

        本文标题:组件分享之后端组件——一个OAuth2.0的客户端

        本文链接:https://www.haomeiwen.com/subject/cgpdyrtx.html