문서는 승인된 사용자만 사용할 수 있습니다.

인터넷상의 인증은 거의 모든 사이트에 존재하는 기본 기능입니다. 우리는 포럼, 소셜 네트워크, 은행 웹사이트, 뉴스 댓글 등을 통해 정기적으로 이러한 문제를 접합니다. 그러나 "로그인" 버튼 뒤에 어떤 기술이 숨겨져 있는지 모두가 아는 것은 아닙니다.

인증 메커니즘은 사용자 식별로 시작됩니다. 사용자는 인증 양식에 자신의 사용자 이름과 비밀번호를 입력하고 이를 시스템에 제출합니다. 이 두 매개변수를 사용하여 시스템은 데이터베이스에서 사용자 계정을 찾고, 사용자가 발견되면 세션.

사용자 비밀번호는 순수한 형태로 데이터베이스에 저장되지 않는다는 점을 상기시켜 드리겠습니다. 대신 특수 영숫자 키가 데이터베이스에 저장됩니다. 이 키는 특수 기능을 적용한 결과입니다. 암호화 기능. 이러한 기능은 되돌릴 수 없으며 결과에 따라 비밀번호를 복구하는 것은 극히 어렵습니다. 이는 데이터 유출이 발생하는 경우 공격자가 사용자의 비밀번호를 사용하여 로그인을 시도할 수 없도록 하기 위한 것입니다. 계정다른 사이트에서(많은 사용자가 모든 서비스에서 동일한 비밀번호를 사용함)

세션 및 쿠키

세션은 다음과 같이 구성됩니다. 열쇠- 독특한 캐릭터 세트 - 그리고 데이터. 매우 간단한 케이스세션 데이터는 데이터베이스의 사용자 ID로 제한됩니다. 그러나 장바구니의 미결제 주문, 전송되지 않은 댓글 텍스트, 게시되지 않은 사진 등 사용자가 시스템을 떠나자마자 파기되어야 하는 다른 데이터가 많이 저장되어 있는 경우가 많습니다.

세션이 생성되면 해당 키가 사용자에게 전송됩니다(세션 데이터 자체는 서버를 떠나지 않습니다). 그 후, 사용자의 브라우저는 요청이 있을 때마다 이를 서버로 보냅니다. 이렇게 하면 동일한 세션 내에서 사용자를 더 쉽게 다시 식별할 수 있습니다. 이 메커니즘이 없으면 사용자는 페이지에서 페이지로 이동할 때 로그인해야 합니다.


브라우저는 다음과 같은 메커니즘을 사용하여 세션 키를 보냅니다. 쿠키 (쿠키). 각 쿠키에 대해 서버는 다음을 설정할 수 있습니다. 유효 기간, 그 이후에는 사용자의 브라우저가 자동으로 쿠키를 파기합니다. 만료 날짜를 지정하지 않으면 사용자가 브라우저 창을 닫는 즉시 폐기됩니다.

"나를 기억해" 기능

"기억하기" 기능이 작동하는 것은 쿠키 만료일 메커니즘 덕분입니다. 기본적으로 서비스는 브라우저가 닫힐 때 만료되는 사용자에 대한 세션을 생성합니다. 그러나 사용자가 "기억하기" 상자를 선택하면 서버는 서비스에 따라 한 달에서 몇 년까지 상당히 긴 유효 기간을 가진 쿠키를 설치합니다.


안타깝게도 쿠키의 유효 기간이 길어질수록 소위 세션 도용(공격자가 쿠키에 저장된 세션 키를 훔치는 행위)의 가능성이 높아집니다. 세션 키를 훔치면 공격자가 사용자를 대신하여 작업을 수행할 수 있습니다. 이러한 이유로 결제 시스템 및 개인 계정은행 웹사이트는 "기억하기" 메커니즘을 제공하지 않습니다. 게다가 자주 소개하는 추가 보호, 예를 들어 그들은 다음과 같이 보냅니다. 특수 코드~에 휴대전화사용자는 자신의 신원을 확인합니다.

제3자 서비스를 통한 승인

최근에는 제3자 서비스를 통한 인증 메커니즘이 대중화되었습니다. 많은 사이트에서는 사용자가 소셜 미디어 계정을 사용하여 댓글을 게시할 수 있습니다. 이는 여러 단계로 작동합니다. 사용자가 이미 VKontakte에서 인증을 받았다고 가정해 보겠습니다. 그가 "VKontakte를 사용하여 로그인" 버튼을 클릭하면 어떤 일이 일어나는지 알아봅시다.

먼저, 서비스는 사용자에게 특별 페이지 VKontakte 웹사이트에서 사용자는 전송 서비스에 자신의 데이터에 대한 액세스 권한을 부여할 것인지 확인해야 합니다. 이 페이지는 VKontakte 웹사이트에 있으므로 전송 서비스는 이 권한을 위조할 수 없습니다.

승인이 확인된 후 VKontakte는 사용자를 전송 서비스로 다시 돌려보내는 동시에 특별 서비스를 전송합니다. 액세스 키. 이 키를 사용하여 서비스는 이후에 사용자의 개인 데이터를 얻거나 사용자의 담벼락에 일종의 게시물을 게시할 수 있습니다.


사용자 인증 후 전송 서비스가 받는 실제 기회 목록은 소셜 네트워크 자체에 따라 다릅니다. 대다수의 소셜 네트워크는 허가를 요청할 때 이러한 모든 가능성을 자세히 설명합니다. 그런데 많은 소셜 네트워크에서는 서비스가 특정 권한을 요청할 수 있으므로 서비스가 귀하에게 요청하는 권리가 무엇인지 항상 읽어보세요!

기사에 제시된 모든 정보를 고려하여 사용자를 위한 보안 권장 사항 목록을 작성할 수 있습니다.

  1. 사용 다른 비밀번호다른 사이트에 대해.물론, 많은 비밀번호를 기억하는 것은 매우 어렵습니다. 이 문제를 해결하려면 이전 기사 중 하나에서 설명한 LastPass 서비스를 사용할 수 있습니다.
  2. 다른 사람의 컴퓨터에서 작업하는 경우 "기억하기" 상자를 선택 취소하고 완료되면 "종료"를 클릭하세요. 이렇게 하면 모든 임시 세션 데이터가 삭제되고 방지됩니다. 다음 사용자자신의 목적을 위해 귀하의 자격 증명을 사용하기 위해 컴퓨터.
  3. 소셜 네트워크를 이용한 승인의 경우, 전송 서비스에서 요청한 자격 증명을 주의 깊게 읽으세요.종종 성가신 서비스는 귀하를 대신하여 벽에 광고를 게시하는 것과 같습니다.

인증은 인터넷에서 사용자의 개인 데이터를 보호하는 주요 수단입니다. 그러므로 이 책임을 책임감 있게 감당할 가치가 있습니다 중요한 기능. 그게 전부입니다. 우리 블로그의 모든 독자들이 안전하게 일하기를 바랍니다!

안녕하세요! 오늘은 경고의 의미를 살펴 보겠습니다. “페이지가 숨겨져 있습니다. 해당 페이지만 이용 가능합니다 승인된 사용자

최근에는 소셜 네트워크 VKontakte가 폐쇄되었습니다. 콘텐츠의 색인이 생성되지 않았습니다. 검색 엔진. 웹마스터는 파서를 사용하여 소셜 네트워크에서 토론을 가져와 사이트를 채우는 등 즉시 이를 활용했습니다. 프로필에도 동일하게 적용됩니다. 프로필의 정보도 소셜 네트워크에 등록된 사람들이 알지 못하는 사이에 수집되었습니다.

그러한 사이트의 출현에 맞서 싸우는 것은 불가능했고 VKONTAKTE의 소유자는 급진적인 조치- 열렸습니다 소셜 네트워크인덱싱을 위해. 즉시 Yandex와 Google에는 수만 개의 그룹과 수백만 명의 사용자가 나타났습니다. 모두가 이것을 좋아하지는 않았습니다. 누군가가 검색에 귀하의 이름과 성을 입력하고 즉시 거의 모든 개인 데이터가 표시되는 VKontakte 프로필을 발견했다고 상상해보십시오.

따라서 개인 정보 보호 설정에 "인터넷에서 누구에게 공개되는지"라는 항목을 추가하기로 결정했습니다. 내 페이지"를 다음 옵션으로 변경하세요.

  • VKontakte 사용자만
  • 검색 사이트를 제외한 모든 사람

"페이지를 숨기면 검색 사이트, 인터넷 검색으로는 찾을 수 없습니다. 예를 들어 Yandex 또는 Google에서. 검색 엔진은 수집된 데이터를 일정 기간 동안 저장합니다. 따라서 해당 페이지는 검색 결과에서 사라집니다. 당장은 아니야최대 한 달 동안 검색이 가능합니다.”

조금 설명하겠습니다. 힘에도 불구하고 검색 엔진, 문제 업데이트는 즉시 발생하지 않고 소위 "업데이트" 중에 발생합니다. Yandex는 약 2주가 필요하고 Google은 조금 덜 필요합니다. 따라서 검색 엔진에서 가시성을 차단하자마자 페이지가 즉시 사라질 것이라고 생각하지 마십시오. 불행하게도.

모든 옵션은 페이지(https://vk.com/settings?act=privacy)에서 설정됩니다. 내 설정 —-> 개인정보 보호(기타 탭).



이제 권한이 없는 사용자가 귀하의 정보를 보려고 하면 다음 메시지가 표시됩니다.



그러나 불행히도 VKontakte에는 소셜 네트워크에 등록되지 않은 사람이 원하는 프로필을 찾을 수 있는 허점이 하나 있습니다. 네트워크.

아바타, 도시, 교육 기관. 그러나 전체 프로필로 이동하려고 하면 "이 페이지는 승인된 사용자만 사용할 수 있습니다."라는 오류가 계속 표시됩니다.

이제 이 메시지가 나타나는 이유를 알 수 있습니다. 좋은 하루 보내세요!

이 기사는 대부분 공식 rtfm의 강의, 즉 "로그인" 구성 요소를 번역한 것이지만 번역기가 삽입되어 있습니다. ~에 최고의 번역나는 가지 않을 것이지만 결국 본질은 분명해야합니다. 그러나 나는 아직 러시아어 번역을 찾지 못했습니다.
이 수업은 "기본"이라고 부르기는 하지만 많은 내용을 담고 있습니다. 상호 연결된 부품. 안에 이번 수업어떤 페이지를 만들어야 하는지, 전체 사용자 인증을 위해 페이지에 게시해야 하는 청크(코드 조각) 및 조각에 대해 논의합니다.

괄호 안의 숫자는 리소스 ID입니다. 이것은 page_id이며 사용자마다 다를 수 있습니다. 여기서는 단지 편의상 선택했습니다.

필요한 페이지를 만듭니다

코드 조각이 포함된 청크를 게시하기 전에 5개의 페이지를 만듭니다.
  • 로그인 페이지(1):로그인 양식이 포함된 페이지
  • 비밀번호 재설정 (2):사용자가 비밀번호 복구를 요청할 수 있는 페이지
  • 비밀번호 재설정 핸들러(3): 숨겨진 페이지, 실제로 비밀번호가 재설정됩니다. 사용자에게는 표시되지 않습니다.
  • 사용자 전용 페이지(4):승인된 사이트 사용자에게만 콘텐츠가 표시되는 페이지
  • 종료 페이지(5):로그아웃 성공 후 사용자가 리디렉션되는 페이지
내 리소스 트리는 다음과 같습니다. 이 순간. 리소스 ID는 다를 수 있다는 점에 유의하세요. 안에 이 예에서는"로그인" 구성 요소에 대한 페이지 외에는 아무것도 없습니다.

다음으로 할당해야 할 작업은 다음과 같습니다. 올바른 권리사용자와 자원을 위해.

필요한 사용자 그룹 및 리소스 그룹 만들기

MODX Revo는 매우 유연한 시스템사용자 권한에 대한 자세한 내용은 있지만 이 주제에서는 주제에 대해 자세히 다루지 않고 필요한 것만 수행합니다. 이제 시작하겠습니다.
1. 보안 → 리소스 그룹
예를 들어 "리소스 그룹 만들기"를 클릭하고 이름을 "사용자 전용"으로 지정합니다. "저장"을 클릭하면 끝입니다. 이 페이지에서는 아무것도 변경하지 않습니다.


2. 보안 → 접근통제
첫 번째 "사용자 그룹" 탭에서 "새 사용자 그룹"을 클릭합니다. 새 그룹이름을 "Users"로 지정하고 "Save"를 클릭합니다. 사용자 그룹은 "사용자 전용" 리소스에 액세스할 수 있습니다. 우리는 이 단원의 뒷부분에서 이것이 왜 필요한지 알아볼 것입니다.


3. 같은 페이지에서 ( 보안 → 접근 제어), 클릭 마우스 오른쪽 버튼으로 클릭생성된 사용자 그룹에 마우스를 놓고 '사용자 그룹 편집'을 선택하세요.



그런 다음 "리소스 그룹에 대한 액세스" 탭으로 이동하여 "리소스 그룹 추가"를 클릭합니다. 을 위한 올바른 작동, 최소한 다음 매개변수가 있어야 합니다.
리소스 그룹:사용자만(방금 생성한 사용자)
최소 역할:회원-9999
액세스 정책:로드, 목록 및 보기
문맥:편물
그리고 우리는 저장합니다.



4. 보안 → 사용자 관리
"새 사용자"를 생성하여 사용자에 대한 액세스 권한 차별화가 어떻게 작동하는지 확인합니다.
안에 이 경우, 간단한 로그인과 비밀번호를 사용하세요. 위에 쓴 것처럼 다음 사항을 확인하는 것이 중요하기 때문입니다. 새로운 사용자"사용자" 그룹에 있습니다. 이렇게 하려면 "액세스 권한" 탭으로 이동하여 "그룹에 사용자 추가"를 클릭하세요.
사용자 그룹:사용자
역할:회원
그런 다음 창에서 "저장"을 클릭한 다음 다시제어판의 오른쪽 모서리에 있습니다.



이렇게 하면 새 사용자가 "사용자" 권한으로 로그인하여 "사용자 전용" 권한으로 페이지를 볼 수 있는지 확인해야 합니다.
이제 해당 페이지에 스니펫과 코드 스니펫을 추가하기 위해 페이지로 돌아가겠습니다.

페이지에 스니펫 추가

로그인 페이지 (1)

사용자 로그인 페이지에 다음 스니펫 호출 코드를 배치하세요.
[[!로그인? &loginTpl=`lgnLoginTpl` &logoutTpl=`lgnLogoutTpl` &errTpl=`lgnErrTpl` &loginResourceId=`4` &logoutResourceId=`5`]]
로그인 양식을 표시하는 청크(코드 조각)에는 "비밀번호 복구" 페이지에 대한 링크도 포함되어야 합니다. 양식 호출에 포함된 내용을 살펴보겠습니다.
&loginTpl=`lgnLoginTpl` - 사용자가 인증되지 않은 경우 lgnLoginTpl 청크가 로그인 양식을 담당합니다.
&logoutTpl=`lgnLogoutTpl` - 사용자가 인증되면 lgnLogoutTpl 청크의 내용이 해당 사용자에게 제공됩니다.
&errTpl=`lgnErrTpl` - 인증 데이터가 잘못 입력된 경우, 또는 간단한 말로"오류", lgnErrTpl 청크가 표시됩니다
&loginResourceId=`4` - 승인 성공 후 사용자를 리디렉션할 위치입니다. 리소스 ID로 지정됩니다(이 경우 4).
&logoutResourceId=`5` - 사용자가 승인된 경우 로그아웃하면 ID가 5인 페이지로 리디렉션됩니다.
또한 이러한 청크는 표준이므로 모든 취향, 레이아웃 및 구현에 맞게 자신만의 청크를 만들 수 있다는 점에 주목하고 싶습니다. 이를 통해 코드에 혼란을 주지 않고 로그인/로그아웃 양식 등을 원하는 형식으로 표시할 수 있습니다. 표준 템플릿, 그런데 변경될 수도 있습니다.
아직 로그인하지 않은 사용자에게 제공되는 코드, 즉 "로그인 양식"은 다음과 같습니다. 덩어리 - lgn로그인Tpl.
[[+오류]]
[[+액션메시지]] [[+login.recaptcha_html]]
비밀번호를 잊어 버렸습니까?
템플릿 내에 "비밀번호 찾기"(비밀번호 재설정) 링크를 넣어서 ID별로 연결하실 수 있습니다. 제 경우에는 비밀번호 복구를 위한 리소스 ID가 2입니다.

비밀번호 재설정 (2)

이 페이지가 메뉴에서 가장 자주 숨겨져 있다는 사실부터 시작해 보겠습니다. 이는 대부분 사용자가 비밀번호를 재설정할 수 있는 양식입니다. 여기에서는 비밀번호 재설정 페이지(저의 경우 ID 2)에서 비밀번호를 재설정해야 한다고 말할 수 있는 기회를 제공하며, 재설정 자체는 “비밀번호 재설정, 핸들러(3)”에 의해 수행된다는 점을 설명하고 싶습니다. ” 페이지.
비밀번호 재설정 양식에 전화하세요 다음 코드로:
[[!비밀번호를 잊으 셨나요? &resetResourceId=`3` &tpl=`lgnForgotPassTpl`]]
과제를 살펴보겠습니다.
&resetResourceId=`3` - 핸들러 페이지(제 경우 ID 3)는 재설정되는 페이지입니다.
&tpl=`lgnForgotPassTpl` - 비밀번호 재설정 양식이 포함된 코드가 포함된 청크입니다.
핸들러가 필요한 이유와 작동 방식을 이해하려면 다음 그림을 살펴보는 것이 좋습니다.


비밀번호 재설정 핸들러 (3)

이 페이지는 모든 메뉴에서 숨겨야 합니다. 그러나 링크가 있더라도 의미가 없습니다.
그 본질은 다음과 같습니다. 사용자가 비밀번호 재설정을 요청하면 이 링크와 해시가 포함된 이메일을 받게 됩니다. 사용자가 이메일의 링크를 클릭하면 MODx는 비밀번호를 재설정하고 사용자를 로그인 페이지로 리디렉션합니다.
핸들러 페이지에서 코드 조각은 다음과 같이 호출됩니다.
[[!암호를 재설정? &loginResourceId=`1`]] - &loginResourceId=`1`은 리디렉션할 페이지를 나타냅니다. 이 경우에는 로그인 양식이 있는 ID 1의 페이지입니다.

사용자 전용 페이지(4)

사용자가 성공적으로 로그인했음을 확인하는 페이지입니다. 이 페이지의 내용은 승인된 사용자만 사용할 수 있습니다.
승인된 사용자만 페이지에 액세스할 수 있도록 하려면 해당 페이지에 대한 권한을 할당해야 합니다. 이렇게 하려면 리소스 트리에서 "사용자 전용 페이지"를 클릭하세요. 그런 다음 "액세스 권한" 탭으로 이동하면 "사용자 전용"이라는 텍스트가 표시되고 그 오른쪽에 "액세스" 열에 선택 취소된 확인란이 표시됩니다. 확인란을 선택하고 "저장"을 클릭하십시오.


종료 페이지(5)

이는 사용자가 계정에서 성공적으로 로그아웃한 후 이동하는 페이지입니다. 페이지에는 작별 메시지나 로그인 양식 링크와 같은 기본 사항만 포함되어야 합니다. 예를 들어:

방문해 주셔서 감사합니다! 더 빨리 돌아오세요!

추가적으로

종료 페이지(5)

이는 필수는 아니지만 테스트 및 일반적인 개발 편의성을 위해 다음을 얻을 수 있습니다. 특별 링크나가기 위해서. 이를 위해 우리는 “ 새 링크"(웹 링크)를 입력하고 해당 페이지를 ID 1로 채웁니다. 예를 들어 다음과 같은 링크로 페이지를 호출합니다.
[[~1? &service=`로그아웃`]]
이는 다음과 같이 출력하는 데 사용할 수 있습니다.
나가

가능한 실수

모든 페이지를 수집하고 연결하고 액세스 권한을 구성한 후에는 모든 것을 확인해야 합니다. 모든 것이 계획대로 작동하면 입장 시 "사용자 전용" 페이지로 리디렉션됩니다. 승인을 받은 경우 로그인 페이지에 로그아웃 링크가 표시되므로 로그인 페이지를 통해 계정에서 로그아웃할 수 있습니다. 로그아웃에 성공하면 "로그아웃 페이지"로 리디렉션됩니다.

로그인할 수 없습니다!

일반적으로 이러한 문제는 페이지 ID가 잘못 지정되거나, 청크 이름의 철자가 잘못되었거나, 청크가 누락된 경우에 발생합니다. 대괄호. 코드를 주의 깊게 확인하세요.

또한 위에 작성된 모든 조각은 캐시되지 않은 것으로 호출되어야 한다는 점을 기억할 가치가 있습니다. 물론 일부는 캐시된 형식으로 작동하지만 대부분은 그렇지 않습니다. 다음을 사용하여 캐시되지 않은 형식으로 호출할 수 있습니다. 느낌표, 예를 들어 다음과 같이 작성해야 합니다.
[[!로그인]]
하지만 이렇지는 않습니다:
[]

내 계정에서 로그아웃할 수 없습니다!

계정에서 로그아웃할 수 없는 이유 중 하나는 로그아웃 링크가 로그인 양식이 없는 페이지로 연결되기 때문입니다. 로그아웃 버튼은 로그인 양식이 있는 페이지를 가리켜야 한다는 점을 기억해 두는 것이 좋습니다.

비밀번호를 재설정할 때 그럴 수도 있습니다. 이메일메시지가 도착하지 않습니다. 이 경우 서버에서 메일 전송을 설정하는 것이 좋습니다.

질문하십시오. 답을 안다면 확실히 도움을 드리겠습니다. 다음 수업은 다음 언어로 번역됩니다. 자유 시간. 여러분의 의견이 반영됩니다 :)
코드 형식을 지정해서 죄송합니다. 처음인데 형식 지정 방법이 어디에도 나와 있지 않습니다...

이 기사에서는 Java의 데스크톱 애플리케이션을 예로 들어 설명합니다. 일반 원칙그리고 그 체계는 다른 언어에서도 비슷할 것입니다.

승인은 어떻게 이루어지나요?

VKontakte에 대한 승인은 다음을 통한 다른 승인과 다르지 않습니다. 타사 서버. 이 프로세스는 StackOverflow 사용자가 완벽하게 설명했습니다. qnub:

  1. 서비스(이 경우 VK)에서 애플리케이션을 등록하고 API 키를 받아야 합니다.
  2. 그 후, 애플리케이션(사이트)은 동일한 API를 통해 제3자 서비스로부터 사용자의 개인 데이터를 요청할 수 있습니다.
    • 사용자(302 Redirect HTTP 응답을 전송하여 사용자의 브라우저)를 리디렉션합니다. 특별히 생성된 링크 API를 제공하는 서비스;
    • 사용자는 거기에서 몇 가지 작업을 수행하고 아마도 로그인하여 데이터에 대한 액세스를 허용할 것입니다.
  3. 작업이 완료되면 사용자가 리디렉션됩니다. 제3자 서비스매개변수에 전달된 URL로 동일한 302 리디렉션을 사용합니다. 특별히 생성된 링크.

1단계. 애플리케이션을 등록하고 키를 받으세요

이 단계가 가장 쉽습니다. 개발자를 위한 VK 페이지로 이동해야 합니다. https://vk.com/dev- 그리고 '애플리케이션 만들기' 버튼을 클릭하세요. 유형을 "독립 실행형 애플리케이션"으로 표시하며 이름은 물론 임의적입니다. 이후 해당 섹션에서 “내 애플리케이션”(어떻게 생각하시나요?) 귀하의 신청서가 나타날 것입니다. 자유롭게 "편집"을 클릭한 다음 "설정" 섹션으로 이동하세요. 첫 번째 줄에 "애플리케이션 ID:"라는 문구가 표시됩니다. 1234567 " 로그인할 때 이 번호만 기억하면 됩니다.

애플리케이션 ID를 숨길 필요는 없습니다. 예를 들어 이 애플리케이션을 통해 담벼락 메시지를 게시할 때 ID는 공개적으로 표시됩니다. ID를 이용하면 토큰이나 기타 정보를 탈취할 수 없습니다. 실제로 내 애플리케이션 ID를 사용할 수도 있습니다(직접 작은 스크립트를 작성해야 하는 경우).

2단계. 특수 링크 생성

다음으로 사용자를 특별히 생성된 주소(문서의 첫 번째 섹션에서 굵은 글씨로 강조 표시됨)로 안내해야 하며, 여기서 사용자는 애플리케이션이 자신의 계정으로 일부 작업을 수행할 수 있도록 허용할지 확인하게 됩니다. 이 링크는 어떻게 형성됩니까?

이 프로세스는 다음 항목에 자세히 설명되어 있습니다. 선적 서류 비치. 그러나 이 기사를 읽으셨다면 문서에 충분한 정보가 없다고 가정하므로 모든 내용을 내 말로 다시 설명하겠습니다. 링크에는 다음 보기: 호스트? 매개변수. 매개변수는 & 기호로 구분된 여러 키=값 쌍의 형태를 취합니다.

호스트는 항상 동일하게 유지됩니다: https://oauth.vk.com/authorize. 매개변수 세트도 변경되지 않습니다.

  • 클라이언트_ID. 여기서는 첫 번째 단계에서 얻은 것과 동일한 숫자를 표시할 가치가 있습니다.
  • 리디렉션_우리. 사용자가 리디렉션될 주소입니다. 독립 실행형 애플리케이션의 경우 https://oauth.vk.com/blank.html에만 해당됩니다.
  • 표시하다. 이 매개변수는 로그인 페이지가 표시되는 방식을 결정합니다. 페이지, 팝업, 모바일의 세 가지 옵션을 사용할 수 있습니다. 확실하지 않은 경우 페이지를 사용하세요.
  • 범위. 이 매개변수에는 필요한 액세스 매개변수를 쉼표로 구분하여 나열해야 합니다. 전체 목록 사용 가능한 매개변수주어진 해당 페이지선적 서류 비치. 아무것도 지정할 필요가 없으며 이 매개변수만 작성하지 마세요. 필요한 액세스 옵션을 알아보려면 다음을 참조하세요. 방법 문서화당신이 사용할 것입니다.
  • 응답_유형. 토큰을 지정하고 계속 진행합니다.
  • V. API 버전. 현재의 - 5.59 .

https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=http://example.com/callback&scope=friends&response_type=token&v=5.59

3단계. 무엇 향후 계획?

http://REDIRECT_URI#access_token= 토큰 3&expires_in= 시간&user_id= ID

우리는 관심이있다 토큰. 사용자를 Java 애플리케이션의 페이지로 안내하는 방법과 VK가 사용자를 리디렉션할 페이지의 주소를 얻는 방법(토큰을 추출하기 위해)은 무엇입니까? 두 가지 방법이 있습니다.

이 경로를 사용하기로 결정한 경우 위에서 받은 링크를 사용하여 시스템의 기본 브라우저를 열고 어떻게든 사용자에게 URL에서 토큰을 복사하여 일부 필드에 붙여넣어야 한다고 알려줍니다. 분명히 이 방법은 형편없는 UX를 가지고 있지만 빠르고 쉽게 구현할 수 있습니다. 음악을 다운로드하거나 알림을 받기 위해 스스로 애플리케이션을 작성하는 경우 매우 적합합니다. 다음과 같이 구현됩니다.

Public String AskToken(String link) throws IOException, URISyntaxException( //기본 브라우저에서 링크 열기 Desktop.getDesktop().browse(new URI(link)); //사용자에게 브라우저에서 수동으로 토큰을 입력하도록 요청 return JOptionPane.showInputDialog(" 브라우저에서 access_token 매개변수를 입력하십시오: "); )

부르주아, 웹 구성 요소를 통해

이 방법을 사용하기로 결정했다면 타사 GUI 라이브러리(또는 적어도 JavaFX)는 무기고에 자체 브라우저 구성 요소가 있습니다. 귀하의 프로그램은 그러한 브라우저에 대해 모든 권한을 가지며 VK가 귀하를 리디렉션한 주소를 검색할 수 있습니다. 소프트웨어. JavaFX에서는 다음과 같이 구현할 수 있습니다.

javafx.application.Application 가져오기; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; javafx.scene.Scene 가져오기; javafx.scene.web.WebEngine 가져오기; javafx.scene.web.WebView 가져오기; import javafx.stage.Stage; 공개 클래스 메인은 응용 프로그램을 확장합니다( 공개 정적 최종문자열 REDIRECT_URL = "https://oauth.vk.com/blank.html"; 공개 정적 최종 문자열 VK_AUTH_URL = ""; //할 것!!! 공개 정적 문자열 tokenUrl; public static void main(String args)( System.out.println(Main.getTokenUrl()); ) public static String getTokenUrl())( launch(Main.class); return tokenUrl; ) @Override public void start(Stage PrimaryStage ) 예외가 발생합니다(최종웹뷰 보기 = 새로운 웹뷰(); 최종 WebEngine 엔진 = view.getEngine(); 엔진.로드(VK_AUTH_URL); PrimaryStage.setScene(새 장면(보기)); PrimaryStage.show(); 엔진.locationProperty().addListener(새 ChangeListener()( @Override 공개 무효 변경됨(ObservableValue

관찰 가능, String oldValue, String newValue) ( ​​​​if(newValue.startsWith(REDIRECT_URL))( tokenUrl=newValue; PrimaryStage.close(); ) ) ); ) )

결론

따라서 우리는 API 메소드를 호출할 수 있는 VKontakte 액세스 토큰을 얻는 방법을 배웠습니다. 이 기사가 커뮤니티에 관심을 불러일으킨다면 다음 기사에서는 토큰을 사용하여 특정 API 메소드를 호출하는 방법, 토큰의 유효성을 확인하는 방법(물론 secure.checkToken() 메소드)을 설명하고 몇 가지를 작성하겠습니다. 예를 들어 재생 목록의 모든 음악을 컴퓨터에 저장하는 일종의 데모 응용 프로그램입니다. 그건 그렇고, 사실 모든 것이 우리보다 먼저 발명되었으며 거의 ​​모든 언어에 대해 VK API를 사용하기 위한 라이브러리가 이미 있다는 것을 잊지 마십시오. 우리는 그중에서 가장 좋은 것을 수집하려고 노력했습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: