Swift1.2로 Dribble의 OAuth를 해봤어요.

6830 단어 Swift
드라이버블의 API를 각종 조사하는 과정에서 드라이버블의 API는 OAuth2에 의해 조사됐다.0 인증이 필요하기 때문에 조사와 동시에 실시해 보았습니다.
도서관도 많지만 일단 해보자는 정신으로 실행에 옮겼다.

GitHub


먼저 원본 코드를 거기에 두고...
ryokosuge/Oauth2Dribbble

OAuth2 돌파 전 과정


먼저 계획적인 것을 소개합니다.
  • Dribble을 통한 Application 등록
  • URLScheeme을 통해 call back URL 설정
  • 실제 인증 화면
  • 콜백에서 값을 받아post
  • 를 보냅니다.

  • 취득access_token
  • 이런 흐름.
    이번에 사용한 API는 드라이버블로, 드라이버의 경우 대화를 나눴고, 다른 API도 크게 다르지 않았다.
    방문지도 다르다.
    그래서 (대략) Qita의 API(ver2.0)도 통용할 수 있다고 생각합니다.
    그럼 하나하나 설명해 주세요.

    1. Dribble를 통해 Application 등록



    Dribbble Developer에서 애플을 등록하세요.Register an Application 버튼을 누르면 등록 화면에 들어갑니다.
    항목 가져오기 정보
  • Name: 응용 프로그램의 이름입니다.
  • Description: 응용 프로그램에 대한 설명입니다.
  • Website URL: 적용된 웹 사이트의 URL입니다.없으면 자기 블로그 URL 같은 거 써도 돼요?
  • Callback URL: 적용된 URL을 반환합니다.iOS의 URLScheme 을 입력하십시오.
  • 이것을 입력하고 register application를 누르면 완성됩니다.Client IDClient Secret를 적어 주십시오.

    2. URLScheeme에서 call back URL 설정


    이거 안 하면 웹에서 인증하고 다시 응용 프로그램으로 돌아가면 끝이에요.
    이걸 캡처해서 설명하고 싶어요.
    Drivbble의 설정 사항

    여기의 Callback URL은 Xcode를 URLScheeme으로 설정합니다.
    XCode 설정

    그러면 웹 인증 후 값이 반환됩니다.

    3. 실제 인증 화면 열기


    그럼 실제적으로 원본 코드로 설명해 드릴게요.
    화면은 이런 느낌이야.

    버튼을 누르면 Safari를 사용하여 인증 화면을 표시합니다.
    아래와 같은 URL을 만들어 두드려라UIApplication.sharedApplication().openURL(_:).
    let authorizeURL = "https://dribbble.com/oauth/authorize?client_id=\({Client ID})&redirect_uri=\({Callback URL})&scope=public&state=DRIBBBLE"
    if let authURL = NSURL(string: authorizeURL) {
        UIApplication.shreadApplication().openURL(authURL)
    }
    
    API의 사양은 다음을 참조하십시오.
    http://developer.dribbble.com/v1/oauth/#web-application-flow
    사파리에 로그인 화면이나 인증 화면이 나오면 인증해주세요.
    만약 순조롭게 진행된다면, 나는 응용 프로그램으로 돌아갈 수 있을 것이라고 생각한다.

    만약 돌아오지 않았다면


    redirect_uri의 지정이 잘못된 것 같습니다. Dribble의 Application 정보와 URLSchemae를 비교해 주십시오.

    4. 콜백에서 가치post 받기


    http://developer.dribbble.com/v1/oauth/#web-application-flow
    2쪽.Dribbble redirects back to your site.이 경우 codestate 값의 콜백 URL이 맞아서 받고 싶어요access_token.

    수령 방법

    AppDelegate.swift에 다음 방법을 추가하십시오.
    AppDelegate.swift
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
        return true
    }
    
    이 방법openURL의 값은 콜백을 통해 되돌아오는 값이다.
    나는 아래의 회답이 있을 것이라고 생각한다.oauth-dribbble://oauth/callback?code=xxxxxxxx&state=DRIBBBLE위 URL의query에서 code를post로client_idclient_secret,redirect_urirequest를 추출합니다.

    5. https://dribbble.com/oauth/token데이터를 얻다


    리퀘스트가 성공하면
    {
      "access_token" : "29ed478ab86c07f1c069b1af76088f7431396b7c4a2523d06911345da82224a0",
      "token_type" : "bearer",
      "scope" : "public write"
    }
    
    (상술한 반응은 샘플이기 때문에 규격적으로도 전혀 의미가 없다.)
    이런response는 되돌아오기 때문에 가져오고 저장하는 형식이 됩니다.

    창설된 학급


    우리는 상술한 처리를 포장하는 종류를 만들었다.
    잘 어울리지만 참고가 됐으면 좋겠습니다.
    OauthDribbble.swift
    원본 코드가 매우 깁니다. 링크에서 용서해 주십시오...

    끝맺다


    나 혼자.0에 익숙하지는 않지만 다른 API 규격일 때는 만져보는 게 좋을 것 같아요.
    무슨 문제가 있으면 저에게 연락 주세요.

    좋은 웹페이지 즐겨찾기