https://github.com/alphabs/naverlogin
NaverLogin
https://github.com/alphabs/naverlogin
Last synced: 12 months ago
JSON representation
NaverLogin
- Host: GitHub
- URL: https://github.com/alphabs/naverlogin
- Owner: AlphaBs
- License: gpl-3.0
- Created: 2021-08-20T06:28:18.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-08-26T15:55:21.000Z (almost 5 years ago)
- Last Synced: 2025-06-09T22:44:23.707Z (about 1 year ago)
- Language: C#
- Size: 45.9 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NaverLogin
.NET 네이버 로그인 라이브러리
현재 GNU 라이센스 사용중입니다. 나중에 변경할 예정
## 공통
### [HttpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=net-5.0)
모든 웹 요청은 `HttpClient` 으로 이루어집니다. `HttpClient` 객체 생성과 관리는 라이브러리에서 처리하지 않습니다.
따라서 라이브러리를 사용하기 전 `HttpClient` 객체 생성과 관리를 위한 코드 작성이 필요합니다. 특히 쿠키 관리가 필요할 경우, `CookieContainer` 객체를 생성하여 관리하시길 바랍니다.
### BrowserInfo
브라우저와 클라이언트와 관련된 데이터는 모두 `BrowserInfo` 객체에서 저장합니다.
아직까지는 `UserAgent` 속성 뿐이지만, 추후 창 크기, 폰트 목록, GPU 이름 등등 BVSD 처리를 위해 더 많은 속성이 추가될 수 있습니다.
```c#
var browser = new BrowserInfo
{
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246";
};
```
### NaverLoginForm
네이버 로그인을 위한 계정 정보, 로그인 옵션 등이 포함되어 있습니다.
현재 아이디와 비밀번호 속성만 작동하며, 추후 IP 보안, 로그인 유지 옵션 등이 추가될 수 있습니다.
```c#
var loginForm = new NaverLoginForm
{
Id = "네이버 계정 아이디",
Password = "네이버 계정 비밀번호"
};
```
## NaverHeadlessLogin
네이버 내부 서비스를 이용하기 위한 로그인. (메일, 카페, 블로그 등등)
### 사용법
```c#
var http = new HttpClient();
var browser = new BrowserInfo
{
UserAgent = "유저에이전트"
};
var naverLogin = new NaverHeadlessLogin(http, browser);
var loginForm = new NaverLoginForm
{
Id = "네이버 아이디",
Password = "네이버 비밀번호"
}
var loginResult = await naverLogin.Login(loginForm);
// loginResult.IsSuccess : 로그인 성공 여부
// loginResult.Response : HttpClient에서 반환한 HttpResponseMessage
```
#### bool AutoRedirect { get; set; }
리다이렉트를 자동으로 처리할지 여부. 3xx 리다이렉트는 HttpClient 의 설정에 따라 처리되며 이 속성은 자바스크립트를 이용한 리다이렉트(location.href)를 자동으로 처리할지의 여부입니다.
기본값은 true 입니다.
#### Task Login(NaverLoginForm form)
form 정보를 사용하여 로그인 후 네이버 메인 페이지로 이동합니다.
#### Task Login(NaverLoginForm form, string redirect)
form 정보를 사용하여 로그인 후 redirect 페이지로 이동합니다.
#### Task LoginFromUrl(NaverLoginForm form, string url)
url 페이지에서 form 정보를 사용하여 로그인합니다.
#### Task LoginFromHtml(NaverLoginForm form, string loginPageHtml, string currentReferer="")
form: 로그인할 정보
loginPageHtml: 로그인 페이지의 HTML 코드
currentReferer(선택): 로그인 요청을 보낼 때 referer 헤더에 설정할 값
## NaverHeadlessOAuth
네이버 외부 서비스를 이용하기 위한 로그인. OAuth 로그인 방식 처리
### 사용법
```c#
// http: HttpClient 객체, browser: BrowserInfo 객체. 문서 상단 '공통' 부분에 설명되어 있습니다.
var naverOAuth = new NaverHeadlessOAuth(http, browser);
// loginForm: NaverLoginForm 객체. 아이디와 비밀번호를 여기에 입력하세요.
// response_type, client_id 등등은 oauth 로그인 페이지의 url 에 있습니다.
var loginResult = await naverOAuth.Login(loginForm, "", "", "", "");
// loginResult.IsSuccess: 로그인 성공여부
// loginResult.Response: HttpClient의 HttpResponseMessage
```
#### Task Login(NaverLoginForm form, string? responseType, string? clientId, string? redirectUri)
`responseType`, `clientId`, `redirectUri` 를 이용해 네이버 OAuth 로그인 페이지의 uri 를 생성하여 이동 후, 해당 페이지에서 form 정보를 사용하여 로그인합니다.
#### Task Login(NaverLoginForm form, string? responseType, string? clientId, string? redirectUri, string? state)
`responseType`, `clientId`, `redirectUri`, `state` 를 이용해 네이버 OAuth 로그인 페이지의 uri 를 생성하여 이동 후, 해당 페이지에서 form 정보를 사용하여 로그인합니다.
#### Task LoginFromUrl(NaverLoginForm form, string url)
url 페이지에서 form 정보를 사용하여 OAuth 로그인을 합니다.
## NaverSearchAdvisor
[네이버 서치어드바이저](https://searchadvisor.naver.com/) 에서 네이버 OAuth 를 이용한 로그인 기능을 제공합니다.
### 사용법
```c#
var searchAdvisor = new NaverSearchAdvisor(http, browser);
var loginResult = await searchAdvisor.Login(loginForm);
// loginResult 는 api/auth/login-token 요청 후 응답입니다. (access-token, refresh-token 포함)
// loginResult 는 HttpClient 의 HttpResponseMessage 형식입니다.
```
#### Task AuthConfirm(object loginData)
api/auth/confirm 요청. loginData 는 로그인 후 결과(JSON) 를 역직렬화한 객체를 의미합니다.