OAuth 2.0 으로 콩짜개 API 접근 하기

8432 단어 OAuth2.0
어떤 사용자 의 access 를 어떻게 계산 합 니까?token 만 료 시간?개발 자 는 두 가지 방식 으로 계산 할 수 있 습 니 다.사용자 가 권한 을 수 여 받 았 을 때 oauth 2/accesstoken 인터페이스 에서 돌아 오 는 expiresin 값 은 accesstoken 의 생명주기.상기 대응 표 에서 응용 에 대응 하 는 권한 수여 유효기간,만 료 시간=사용자 권한 수여 시간+권한 수여 유효기간 을 찾 습 니 다.
OAuth 2.0 으로 콩짜개 API 접근 하기
두 쪽 은 OAuth 2.0 프로 토 콜 의 권한 부여 접근 을 지원 합 니 다.OAuth 2.0 프로 토 콜 규범 에 대해 서 는 참고 하 시기 바 랍 니 다여기,이곳.
OAuth 2.0 을 사용 하 는 절 차 는 다음 과 같이 요약 할 수 있 습 니 다.
  • 응용 프로그램 이 콩잎 에 권한 을 요청 합 니 다
  • 콩잎 은 사용자 에 게 권한 수여 페이지 를 표시 하고 사용 자 는 이 페이지 에서 응용 요청 에 동의 하 는 지 확인 합 니 다
  • 사용자 가 권한 수여 에 동의 하면 방문 토 큰(accesstoken)이 토 큰 을 통 해 권한 을 수 여 받 은 사용자 의 데 이 터 를 방문 할 수 있 습 니 다.
  • 권한 이 필요 한 Api 에 접근 하려 면 https 프로 토 콜 과 access 를 사용 하 십시오.token 의 Header,구체 적 으로획득 accesstoken
  • 두 쪽 은 OAuth 2.0 의 세 가지 권한 수여 절 차 를 지원 합 니 다.
  • 서버 의 WEB 응용 권한 수여 프로 세 스(server-side flow)
  • 데스크 톱 클 라 이언 트 응용,모 바 일 클 라 이언 트 응용 권한 수여 절차(native-applicationflow)
  • 브 라 우 저 에서 직접 실행 되 는 자바 script 응용 권한 부여 프로 세 스(user-agent flow)

  • flow 와 native-applicationflow
    이 두 가지 권한 수여 절 차 는 기본적으로 같 으 므 로 두 단 계 를 통 해 access 를 얻어 야 합 니 다.token。
    인증 획득code
    브 라 우 저 에서 아래 주 소 를 방문 하여 사용자 의 권한 을 부여 하고 authorizationcode
    https://www.douban.com/service/auth2/auth
    
    

    인자:
    매개 변수 이름
    매개 변수 설명
    client_id
    필수 매개 변수,유일한 표지,APIKey 에 대응
    redirect_uri
    필수 매개 변 수 는 사용자 권한 수여 가 완 료 된 후 주 소 를 되 돌려 줍 니 다.이 주 소 를 통 해 사용자 의 권한 수여 결 과 를 받 아야 합 니 다.이 주 소 는 등록 할 때 작성 한 리 셋 주소 와 일치 해 야 합 니 다.
    response_type
    필수 인자 입 니 다.이 값 은 code 나 token 일 수 있 습 니 다.이 프로 세 스에 서 이 값 은 code 입 니 다.
    scope
    선택 가능 한 매개 변수,신청 권한 의 범 위 를 채 우지 않 으 면 결 성 된 scope 를 사용 합 니 다.여러 scope 를 신청 하면 쉼표 로 구분 합 니 다.
    state
    요청 과 리 셋 상 태 를 유지 하기 위 한 추가 문자열 을 선택 할 수 있 습 니 다.리 셋 을 완료 할 때 이 매개 변 수 를 추가 합 니 다.이 문자열 에 따라 컨 텍스트 관 계 를 판단 할 수 있 습 니 다.
    메모:이 요청 은 HTTP GET 방식 이 어야 합 니 다.
    예 를 들 면:
    https://www.douban.com/service/auth2/auth?
    
      client_id=0b5405e19c58e4cc21fc11a4d50aae64&
    
      redirect_uri=https://www.example.com/back&
    
      response_type=code&
    
      scope=shuo_basic_r,shuo_basic_w,douban_basic_common
    
    

    결과 되 돌리 기:
  • 사용자 가 인증 을 거부 할 때 브 라 우 저 는 redirect 로 다시 설정 합 니 다.uri,오류 정보 추가
    https://www.example.com/back?error=access_denied
    
    
  • 사용자 가 권한 수여 에 동의 할 때 브 라 우 저 는 redirect 로 재 설정 합 니 다.uri,그리고 autorization 추가code
    https://www.example.com/back?code=9b73a4248
    
    

  • 획득 accesstoken
    https://www.douban.com/service/auth2/token
    
    

    매개 변수 이름
    매개 변수 설명
    client_id
    필수 매개 변수,유일한 표지,APIKey 에 대응
    client_secret
    필수 매개 변수,응용 유일한 표지,콩잎 시 크 릿 에 대응
    redirect_uri
    필수 매개 변 수 는 사용자 권한 수여 가 완 료 된 후 주 소 를 되 돌려 줍 니 다.이 주 소 를 통 해 사용자 의 권한 수여 결 과 를 받 아야 합 니 다.이 주 소 는 등록 할 때 입력 한 리 셋 주소 와 일치 해 야 합 니 다.
    grant_type
    필수 매개 변수,이 값 은 authorizationcode 혹은 refreshtoken 。이 프로 세 스에 서 이 값 은 authorizationcode
    code
    필수 매개 변수,이전 단계 에서 획득 한 authorizationcode
    메모:이 요청 은 HTTP POST 방식 이 어야 합 니 다.
    예 를 들 면:
    https://www.douban.com/service/auth2/token?
    
      client_id=0b5405e19c58e4cc21fc11a4d50aae64&
    
      client_secret=edfc4e395ef93375&
    
      redirect_uri=https://www.example.com/back&
    
      grant_type=authorization_code&
    
      code=9b73a4248
    
    

    결과 되 돌리 기:
    {
    
      "access_token":"a14afef0f66fcffce3e0fcd2e34f6ff4",
    
      "expires_in":3920,
    
      "refresh_token":"5d633d136b6d56a41829b73a424803ec",
    
      "douban_user_id":"1221"
    
    }
    
    

    access 사용token
    curl "https://api.douban.com/v2/user/~me"
    
         -H "Authorization: Bearer a14afef0f66fcffce3e0fcd2e34f6ff4"
    
    

    access_token 유효기간 및 refreshtoken
    OAuth 2.0 에서 accesstoken 은 더 이상 장기 적 으로 유효 하지 않 습 니 다.권한 부여 중 access 획득token 시 유효기간,즉 반환 값 의 expires 를 되 돌려 줍 니 다.인자
    accesstoken 사용 중 서버 가 106 오 류 를 되 돌려 주면:"accesstoken_has_expired",이때 access 설명token 은 만 료 되 었 습 니 다.다시 사용자 에 게 권한 을 부여 하 는 것 을 제외 하고 accesstoken 외 에 refreshtoken 방식 으로 새로운 accesstoken 과 refreshtoken。
    refreshtoken 교환 accesstoken 의 처리 과정 은 다음 과 같 습 니 다.
    https://www.douban.com/service/auth2/token
    
    

    매개 변수 이름
    매개 변수 설명
    client_id
    필수 매개 변수,유일한 표지,APIKey 에 대응
    client_secret
    필수 매개 변수,응용 유일한 표지,콩잎 시 크 릿 에 대응
    redirect_uri
    필수 매개 변 수 는 사용자 권한 수여 가 완 료 된 후 주 소 를 되 돌려 줍 니 다.이 주 소 를 통 해 사용자 의 권한 수여 결 과 를 받 아야 합 니 다.이 주 소 는 등록 할 때 입력 한 리 셋 주소 와 일치 해 야 합 니 다.
    grant_type
    필수 매개 변수,이 값 은 authorizationcode 혹은 refreshtoken。이 프로 세 스에 서 이 값 은 refreshtoken
    refresh_token
    필수 매개 변수,영패 리 셋
    메모:이 요청 은 HTTP POST 방식 이 어야 합 니 다.refreshtoken 은 accesstoken 이 만 료 되 었 을 때 만 사용 할 수 있 고 한 번 만 사용 할 수 있 습 니 다.바 꾼 accesstoken 다시 만 료 시 새로운 refresh 사용token 에서 accesstoken
    예 를 들 면:
    https://www.douban.com/service/auth2/token?
    
      client_id=0b5405e19c58e4cc21fc11a4d50aae64&
    
      client_secret=edfc4e395ef93375&
    
      redirect_uri=https://www.example.com/back&
    
      grant_type=refresh_token&
    
      refresh_token=5d633d136b6d56a41829b73a424803ec
    
    

    결과 되 돌리 기:
    {
    
      "access_token":"0e63c03dfb66c4172b2b40b9f2344c45",
    
      "expires_in":3920,
    
      "refresh_token":"84406d40cc58e0ae8cc147c2650aa20a",
    
      "douban_user_id":"1000"
    
    }
    
    

    등급
    access_token 유효기간
    refresh_token 유효기간
    설명 하 다.
    L1
    7 일
    14 일
     
    L2
    30 일
    60 일
     
    L3
    90 일
    180 일
     
    권한 부여 가 필요 한 Api 접근 속도 제어
    사용자,응용,서버 IP,scope 등 차원 에서 인터페이스의 접근 속 도 를 제한 합 니 다.
    서버 IP 대상:
    등급
    제한 하 다.
    L1
    5000 회/시간
    L2
    10000 회/시간
    L3
    20000 회/시간
    단일 사용자 에 대한 모든 scope 적용:
    등급
    제한 하 다.
    L1
    500 회/시간
    L2
    1000 회/시간
    L3
    2000 회/시간
    결 과 를 되 돌려 주 는 header 에 현재 접근 제한 정보 가 있 습 니 다:
    헤더 이름
    속뜻
    X-Ratelimit-Limit
    단일 사용자 시간 당 횟수
    X-RateLimit-Remaining
    단일 사용자 시간 당 남 은 횟수
    X-Ratelimit-Limit2
    단일 ip 시간 당 횟수
    X-RateLimit-Remaining2
    시간 당 남 은 횟수
    오류 코드
    API 사용 중 오류 가 발생 하면 결 과 를 다음 과 같이 되 돌려 줍 니 다.
    {
    
      "code":113,
    
      "msg":"required_parameter_is_missing: client_id",
    
      "request":"GET /shuo/statuses/232323"
    
    }
    
    

    오류 코드
    잘못된 설명
    100
    invalid_request_scheme 잘못된 요청 프로 토 콜
    101
    invalid_request_method 잘못된 요청 방법
    102
    access_token_is_찾 을 수 없 음 accesstoken
    103
    invalid_access_token access_token 이 존재 하지 않 거나 삭제 되 었 거나 사용자 가 암 호 를 수정 하 였 습 니 다.
    104
    invalid_apikey apikey 가 존재 하지 않 거나 삭제 되 었 습 니 다.
    105
    apikey_is_blocked apikey 가 비활성화 되 었 습 니 다.
    106
    access_token_has_expired access_token 기한 이 지 났 습 니 다.
    107
    invalid_request_uri 요청 주소 미등 록
    108
    invalid_credencial 1 사용자 가 이 데이터 에 접근 할 수 있 는 권한 이 없습니다.
    109
    invalid_credencial 2 apikey 이 권한 을 신청 하지 않 았 습 니 다
    110
    not_trial_user 미등 록 테스트 사용자
    111
    rate_limit_exceeded 1 사용자 접근 속도 제한
    112
    rate_limit_exceeded 2 IP 접근 속도 제한
    113
    required_parameter_is_누락 매개 변수 부족
    114
    unsupported_grant_type 잘못된 granttype
    115
    unsupported_response_type 잘못된 responsetype
    116
    client_secret_mismatch client_비밀 일치 하지 않 음
    117
    redirect_uri_mismatch redirect_uri 일치 하지 않 음
    118
    invalid_authorization_code authorization_code 가 존재 하지 않 거나 만 료 되 었 습 니 다.
    119
    invalid_refresh_token refresh_token 이 존재 하지 않 거나 만 료 되 었 습 니 다.
    120
    username_password_mismatch 사용자 이름 비밀번호 가 일치 하지 않 습 니 다.
    121
    invalid_user 사용자 가 존재 하지 않 거나 삭제 되 었 습 니 다.
    122
    user_has_blocked 사용자 가 차단 되 었 습 니 다
    123
    access_token_has_expired_since_password_changed 사용자 가 비밀 번 호 를 수정 하여 access만 료
    124
    access_token_has_not_expired access_token 미 만
    125
    invalid_request_scope 가 접근 한 scope 는 합 법 적 이지 않 습 니 다.개발 자 는 너무 관심 을 가지 지 않 아 도 됩 니 다.일반적으로 이 오류 가 발생 하지 않 습 니 다.
    999
    알 수 없 는 오류
    HTTP 상태 코드
    설명 하 다.
    200
    api 요청 정상 표시
    400
    api 요청 오류 표시,구체 적 인 원인 은 위 에 열거 한 오류 코드 참조

    좋은 웹페이지 즐겨찾기