Documentation ¶
Index ¶
- Constants
- Variables
- func GenerateCodeVerifier(length int) string
- func GenerateNonce() string
- func PkceChallenge(verifier string) string
- type APIError
- type AuthRequestOptions
- type BasicResponse
- type Client
- func (client *Client) GetAccessToken(redirectURL, code string) *GetAccessTokenCall
- func (client *Client) GetAccessTokenPKCE(redirectURL, code, codeVerifier string) *GetAccessTokenPKCECall
- func (client *Client) GetFriendshipStatus(accessToken string) *GetFriendshipStatusCall
- func (client *Client) GetPKCEWebLoinURL(redirectURL string, state string, scope string, codeChallenge string, ...) string
- func (client *Client) GetUserProfile(accessToken string) *GetUserProfileCall
- func (client *Client) GetWebLoinURL(redirectURL string, state string, scope string, options AuthRequestOptions) string
- func (client *Client) RefreshToken(refreshToken string) *RefreshTokenCall
- func (client *Client) RevokeToken(accessToken string) *RevokeTokenCall
- func (client *Client) TokenVerify(accessToken string) *TokenVerifyCall
- type ClientOption
- type ErrorResponse
- type GetAccessTokenCall
- type GetAccessTokenPKCECall
- type GetFriendshipStatusCall
- type GetFriendshipStatusResponse
- type GetUserProfileCall
- type GetUserProfileResponse
- type Payload
- type RefreshTokenCall
- type RevokeTokenCall
- type TokenRefreshResponse
- type TokenResponse
- type TokenVerifyCall
- type TokenVerifyResponse
- type UserProfileResponse
Constants ¶
const ( APIEndpointAuthBase = "https://access.line.me" APIEndpointAuthorize = "/oauth2/v2.1/authorize" APIEndpointBase = "https://api.line.me" APIEndpointToken = "/oauth2/v2.1/token" APIEndpointTokenVerify = "/oauth2/v2.1/verify" APIEndpointRevokeToken = "/oauth2/v2.1/revoke" APIEndpointGetUserProfile = "/v2/profile" APIEndpointGetFriendshipStratus = "/friendship/v1/status" )
APIEndpoint constants
Variables ¶
var (
ErrInvalidSignature = errors.New("invalid signature")
)
errors
Functions ¶
func GenerateCodeVerifier ¶
GenerateCodeVerifier: Generate code verifier (length 43~128) for PKCE.
func GenerateNonce ¶
func GenerateNonce() string
func PkceChallenge ¶
PkceChallenge: base64-URL-encoded SHA256 hash of verifier, per rfc 7636
Types ¶
type AuthRequestOptions ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client type
func New ¶
func New(channelID, channelSecret string, options ...ClientOption) (*Client, error)
New returns a new bot client instance.
func (*Client) GetAccessToken ¶
func (client *Client) GetAccessToken(redirectURL, code string) *GetAccessTokenCall
GetAcceessToken: Issues access token.
func (*Client) GetAccessTokenPKCE ¶
func (client *Client) GetAccessTokenPKCE(redirectURL, code, codeVerifier string) *GetAccessTokenPKCECall
GetAccessTokenPKCECall: Issues access token by PKCE.
func (*Client) GetFriendshipStatus ¶
func (client *Client) GetFriendshipStatus(accessToken string) *GetFriendshipStatusCall
GetFriendshipStatus: Gets the friendship status of the user and the bot linked to your LINE Login channel. Note: Requires an access token with the profile scope. For more information, see Making an authorization request and Scopes. Note: You must have a bot linked with your channel. For more information, see Linking a bot with your LINE Login channel.
func (*Client) GetPKCEWebLoinURL ¶
func (client *Client) GetPKCEWebLoinURL(redirectURL string, state string, scope string, codeChallenge string, options AuthRequestOptions) string
GetPKCEWebLoinURL - LINE LOGIN 2.1 get LINE Login authorization request URL by PKCE
func (*Client) GetUserProfile ¶
func (client *Client) GetUserProfile(accessToken string) *GetUserProfileCall
GetUserProfile: Gets a user's display name, profile image, and status message. Note: Requires an access token with the profile scope. For more information, see Making an authorization request and Scopes.
func (*Client) GetWebLoinURL ¶
func (client *Client) GetWebLoinURL(redirectURL string, state string, scope string, options AuthRequestOptions) string
GetWebLoinURL - LINE LOGIN 2.1 get LINE Login authorization request URL
func (*Client) RefreshToken ¶
func (client *Client) RefreshToken(refreshToken string) *RefreshTokenCall
Refresh Token: Gets a new access token using a refresh token. Refresh tokens are returned with the access token when the user authorizes your app. Note: This is the reference for the v2.1 endpoint. For the v2 reference, see Refresh access token v2. Note: Cannot be used to refresh channel access tokens which are used for the Messaging API.
func (*Client) RevokeToken ¶
func (client *Client) RevokeToken(accessToken string) *RevokeTokenCall
RevokeToken: Invalidates the access token. Note: This is the reference for the v2.1 endpoint. For the v2 reference, see Revoke access token v2. Note: Cannot be used to invalidate channel access tokens which are used for the Messaging API.
func (*Client) TokenVerify ¶
func (client *Client) TokenVerify(accessToken string) *TokenVerifyCall
TokenVerify: Verifies the access token. Note: This is the reference for the v2.1 endpoint. For the v2 reference, see Verify access token v2 (https://developers.line.biz/en/reference/social-api-v2/#verify-access-token)
type ClientOption ¶
ClientOption type
func WithEndpointBase ¶
func WithEndpointBase(endpointBase string) ClientOption
WithEndpointBase function
type ErrorResponse ¶
type ErrorResponse struct { Message string `json:"message"` Details []errorResponseDetail `json:"details"` }
ErrorResponse type
type GetAccessTokenCall ¶
type GetAccessTokenCall struct {
// contains filtered or unexported fields
}
GetAccessTokenCall type
func (*GetAccessTokenCall) Do ¶
func (call *GetAccessTokenCall) Do() (*TokenResponse, error)
Do method
func (*GetAccessTokenCall) WithContext ¶
func (call *GetAccessTokenCall) WithContext(ctx context.Context) *GetAccessTokenCall
WithContext method
type GetAccessTokenPKCECall ¶
type GetAccessTokenPKCECall struct {
// contains filtered or unexported fields
}
func (*GetAccessTokenPKCECall) Do ¶
func (call *GetAccessTokenPKCECall) Do() (*TokenResponse, error)
Do method
func (*GetAccessTokenPKCECall) WithContext ¶
func (call *GetAccessTokenPKCECall) WithContext(ctx context.Context) *GetAccessTokenPKCECall
WithContext method
type GetFriendshipStatusCall ¶
type GetFriendshipStatusCall struct {
// contains filtered or unexported fields
}
GetUserProfileCall type
func (*GetFriendshipStatusCall) Do ¶
func (call *GetFriendshipStatusCall) Do() (*GetFriendshipStatusResponse, error)
Do method
func (*GetFriendshipStatusCall) WithContext ¶
func (call *GetFriendshipStatusCall) WithContext(ctx context.Context) *GetFriendshipStatusCall
WithContext method
type GetFriendshipStatusResponse ¶
type GetFriendshipStatusResponse struct { // FriendFlag: true if the user has added the bot as a friend and has not blocked the bot. Otherwise, false. FriendFlag bool `json:"friendFlag"` }
GetFriendshipStatusResponse type
type GetUserProfileCall ¶
type GetUserProfileCall struct {
// contains filtered or unexported fields
}
GetUserProfileCall type
func (*GetUserProfileCall) Do ¶
func (call *GetUserProfileCall) Do() (*GetUserProfileResponse, error)
Do method
func (*GetUserProfileCall) WithContext ¶
func (call *GetUserProfileCall) WithContext(ctx context.Context) *GetUserProfileCall
WithContext method
type GetUserProfileResponse ¶
type GetUserProfileResponse struct { // UserID: Identifier of the user UserID string `json:"userId"` // DisplayName: User's display name DisplayName string `json:"displayName"` // PictureURL: Profile image URL. "https" image URL. Not included in the response if the user doesn't have a profile image. PictureURL string `json:"pictureUrl"` //StatusMessage: User's status message. Not included in the response if the user doesn't have a status message. StatusMessage string `json:"statusMessage"` }
GetUserProfileResponse type
type Payload ¶
type Payload struct { Iss string `json:"iss"` Sub string `json:"sub"` Aud string `json:"aud"` Exp int `json:"exp"` Iat int `json:"iat"` AuthTime int `json:"auth_time"` Nonce string `json:"nonce"` Amr []string `json:"amr"` Name string `json:"name"` Picture string `json:"picture"` Email string `json:"email"` }
type RefreshTokenCall ¶
type RefreshTokenCall struct {
// contains filtered or unexported fields
}
RefreshTokenCall type
func (*RefreshTokenCall) Do ¶
func (call *RefreshTokenCall) Do() (*TokenRefreshResponse, error)
Do method
func (*RefreshTokenCall) WithContext ¶
func (call *RefreshTokenCall) WithContext(ctx context.Context) *RefreshTokenCall
WithContext method
type RevokeTokenCall ¶
type RevokeTokenCall struct {
// contains filtered or unexported fields
}
RefreshTokenCall type
func (*RevokeTokenCall) WithContext ¶
func (call *RevokeTokenCall) WithContext(ctx context.Context) *RevokeTokenCall
WithContext method
type TokenRefreshResponse ¶
type TokenRefreshResponse struct { // TokenType: Bearer TokenType string `json:"token_type"` // Scope: Permissions granted by the user. For more information, see Scopes. //profile: Permission to get the user's profile information. //openid: Used to retrieve an ID token. For more information, see ID tokens. //email: Permission to get the user's email address. openid must be specified at the same time. For more information, see ID tokens. Scope string `json:"scope"` // AccessToken: Access token. Valid for 30 days. AccessToken string `json:"access_token"` // ExpiresIn: Amount of time in seconds until the access token expires ExpiresIn int `json:"expires_in"` // RefreshToken: Which token you want to refresh. //Token used to get a new access token. Valid up until 10 days after the access token expires. RefreshToken string `json:"refresh_token"` }
Token refresh type
type TokenResponse ¶
type TokenResponse struct { // AccessToken: Access token. Valid for 30 days. AccessToken string `json:"access_token"` // ExpiresIn: Amount of time in seconds until the access token expires ExpiresIn int `json:"expires_in"` // IDToken: JSON Web Token (JWT) that includes information about the user. //This field is returned only if openid is specified in the scope. For more information, see ID tokens. IDToken string `json:"id_token"` // RefreshToken: Which token you want to refresh. //Token used to get a new access token. Valid up until 10 days after the access token expires. RefreshToken string `json:"refresh_token"` // Scope: Permissions granted by the user. For more information, see Scopes. //profile: Permission to get the user's profile information. //openid: Used to retrieve an ID token. For more information, see ID tokens. //email: Permission to get the user's email address. openid must be specified at the same time. For more information, see ID tokens. Scope string `json:"scope"` // TokenType: Bearer TokenType string `json:"token_type"` }
TokenResponse type
func (TokenResponse) DecodePayload ¶
func (t TokenResponse) DecodePayload(channelID string) (*Payload, error)
DecodePayload : decode payload result.
type TokenVerifyCall ¶
type TokenVerifyCall struct {
// contains filtered or unexported fields
}
Client type
func (*TokenVerifyCall) Do ¶
func (call *TokenVerifyCall) Do() (*TokenVerifyResponse, error)
Do method
func (*TokenVerifyCall) WithContext ¶
func (call *TokenVerifyCall) WithContext(ctx context.Context) *TokenVerifyCall
WithContext method
type TokenVerifyResponse ¶
type TokenVerifyResponse struct { Scope string `json:"scope"` ClientID string `json:"client_id"` ExpiresIn int `json:"expires_in"` }
Token verification reponse