freee API 시작하기(OAuth2 인증을 통해 사용자 정보 얻기)

4158 단어 PHPfreeeoauth2

개시하다


2016년 12월 3일에 저는 Startup weekend Tokyo Fintech#2의 게임'freee API Hackson'에 참가했습니다.프리 여러분의 성원에 프리의 API를 가르쳐 주셨습니다.
해커슨 당일회계 소프트웨어freee공개된 API까지 쓸 수 있을 때까지 시간이 조금 걸렸기 때문에 메모를 남겼다.

미리 준비하다


API 문서에서 발췌

  • freee 서명.

  • 응용 프로그램 목록부터 새 응용 프로그램 등록을 시작합니다.
  • 어플리케이션 등록이 완료되면 AppID 및 Secret을 받을 수 있습니다.
  • 로컬 개발 환경에서 테스트할 때 Authorization Code를 얻기 위해 인증용 URL을 직접 요청할 수 있습니다.
  • 응용 프로그램을 등록할 때 콜백 URI를 입력해야 합니다(나중에 변경할 수도 있습니다).어디서 이동할지 미리 생각해 보는 게 좋을 것 같아요.호출 URI를 지정하는 URI는 외부에서 연결할 수 없는 주소(예: localhost)라도 문제가 없습니다.

    시험해 보다


    코드


    [주의]
  • $_GET를 직접 처리한 것이기 때문에 실제로 잘 검사해야 한다.제일 잘해.
  • sample.php
    <?php
    
        define( 'APP_ID', 'APPIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
        define( 'APP_SECRET', 'SECRETxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
        define( 'APP_CALLBACK', 'http://http://192.168.110.202//freee20161204/sample.php' );
        //※注意:APP_CALLBACKの値は、freeeのアプリケーション一覧に登録されている
        //       コールバックURIと同じにする必要があります。
    
        // (1) いちばん最初の処理。OAuth2の入り口。
        if( empty( $_GET ) )
        {
            printf('<html><a href="%s?client_id=%s&redirect_uri=%s&response_type=code">認証開始</a></html>',
                    'https://secure.freee.co.jp/oauth/authorize',   //認証用
                    APP_ID, 
                    urlencode( APP_CALLBACK )
            );
        }
    
        // (2) freeeで「許可する」が押されたあとに実行する処理
        if( ! empty( $_GET['code'] ) )
        {
            $content = [
                "code"          => $_GET['code'],
                "grant_type"    => "authorization_code",
                "client_id"     => APP_ID,
                "client_secret" => APP_SECRET,
                "redirect_uri"  => APP_CALLBACK,
            ];
    
            $curl = curl_init( 'https://api.freee.co.jp/oauth/token.json' );    //認証済みToken取得用
            curl_setopt( $curl, CURLOPT_POST, TRUE );
            curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $content ) );
            curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true);
            $jsonToken = curl_exec($curl);
            $token = json_decode( $jsonToken, true );        
    
            var_dump( $token );
        }
    
        // (3) Token取得後の処理。各種APIの実行
        if( ! is_null( $token['access_token'] ) )
        {
            $header = [
                'Authorization: Bearer ' . $token['access_token'],
            ];
    
            $curl = curl_init( 'https://api.freee.co.jp/api/1/users/me?companies=true' );  //自分の情報
            curl_setopt( $curl, CURLOPT_HTTPHEADER, $header );
            curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true);
            $jsonResult = curl_exec($curl);
            $result = json_decode( $jsonResult, true );
    
            var_dump( $result );
        }
    

    동작 결과


    (1) 첫 번째 처리.OAuth2의 입구입니다.



    (2)freee에서 "허가"를 누르면 실행하는 처리



    (3) Token 취득 후 처리.다양한 API 실행


    (2)의 아래 부분.자신의 정보를 얻었다

    가장 적합한 곳

  • 획득한 Token은 24시간 유효합니다.
  • 많은 API에서 사업 단위 ID가 필요합니다.
    이 사무소 ID는freee에 로그인할 때 회사 이름을 누르면 표시되는 숫자(xxxxx-yyy-zzz)가 아닙니다.Users(사용자) 및 Companies(사무소)를 사용하여 얻은 값이 필요합니다.
  • 최후


    이번 주말(12월 09일~11일) 개최Startup Weekend Tokyo Fintech #2freee 데이터를 방문하고 싶을 때 조금만 참고해 주시면 좋겠습니다.

    좋은 웹페이지 즐겨찾기