PHP2011. 5. 10. 17:42

http://blog.daum.net/palranggoblin/24?srchid=BR1http%3A%2F%2Fblog.daum.net%2Fpalranggoblin%2F24



죽는 줄 알았다... 난.. 왜 이렇게 느리게 배우는지 모르겠다;;ㅠㅠ

맙소사.. search 능력이라도 좋았으면.. 금방 해결 할 수 있는 문제였는데...

무엇보다.. 나는 아직 기본이 없는것 같다.. 정말.. 자세하게 명시되거나 완벽한 예시가 없으면.. 언제나 느리게 이해하니 말이다.ㅠㅠ

빨리.. 커서 어떤 문제에 직면해도 유연하게 대처할 수 있는 능력이 생겼으면 좋겠다...

장작.... 5시간에 걸쳐서 해결한 문제이다.. 흠... 멍청한건.. 죄다!!!

 

p.s. 자세한 내용은 아래의 주소를 참조하길 바란다!

http://www.s-tune.com/blog/397     <-  oAuth를 이용한 Twitter에 php로 글쓰기

http://mudchobo.tistory.com/498      <-  PHP용 트위터 OAuth연동라이브러리 twitteroauth 사용법

http://smok95.tistory.com/213          <- 트위터 twitter API 어플리케이션 등록하기

 

설명 드릴 내용은.. 관련.. 정보를 혼합하여 내가 헷갈린 부분까지 모조리 설명!!!!!

=============================================================================================================================

 

1. 기초자료 수집 및 환경 설정!

1) 동작원리

① 연동할 어플리케이션을 등록합니다.
② 등록하게 되면 Consumer key와 Consumer secret을 발급받습니다.
③ 명시된 Request Token url로 이 키를 이용해 요청하게 되면 인증 url로 가서 이 어플에서 계정접근을 허용할 것인지 묻습니다.
④ 그리고, 허용하게 된다면 Access Token url로 이동해 Access Token을 발급 받습니다.
⑤ 이 받게 된 AccessToken을 이용해서 해당 어플리케이션은 글쓰고, 정보를 불러올 수 있게 됩니다.

 

#. 예제 소스 다운받기!!

http://github.com/abraham/twitteroauth/downloads 로 들어가서 download 한 후 해당 위치에 폴더를 풀어 주세요!

(기본 : C:\APM_Setup\htdocs (아마;; 아파치로 사용하시면... 기본이 아닐까요??))

 

그리고 무작정 connect.php 를 시작해 보자.

 

 

막... 이런 식으로 에러 메시지가 나온다.....

물론... 굵게 된 부분은.. 경로에 따른 사항이니^^

Fatal error : Call to undefined function curl_init()  이 부분을 복사해서 검색을 하게 되면... 많은 답변이 나올것이다!

 

해결방법 하나!

C:\APM_Setup 에 있는 php.ini에 들어가서 " extension=php_curl.dll " 이부분에 주석을 지우고 아파치를 재동작시켜주면 된다.

(다른 블로그에서는 위 경로에 있는 php.ini에서 수정해도 안된다고... 질문이 들어온걸 확인 할 수있었다... 이게 정답일지 모르겠지만... C:\APM_Setup\Server\Apache\bin 에 있는 php.ini에 들어가서  " extension=php_curl.dll " 이부분에 주석을 지우면 된다고 한다!)

 

 

해결방법 둘!

일반적으로 잘 사용하지 않는 function 이기 때문에 curl 설치와 PHP 의 컴파일이 필요하다.

 

설치했을 때 curl 옵션을 주지 않았던 것이 원인. 물론 curl 이 설치 되어 있어야 가능한 이야기다.

curl은 http://curl.haxx.se 에서 받을 수 있다.

자신의 환경에 맞는 파일을 받으면 되는데, 아직까지 bz2 에는 정이 가지 않아 gz파일을 받았다.

용량은 그리 크지 않기 때문에 받는데 긴 시간이 필요하지는 않는다.

옵션 또한 매우 간단하기 때문에 설치할 폴더만 지정하고, 환경 설정 파일을 만든다.

서비스에 직접적으로 영향을 미치지 않기 때문에 make와 install을 한번에! 물론, 정석대로라고 하면 지적 받을만한 행동이다.

설치 폴더를 방문해 제대로 설치가 됐나 다시한번 확인하고!

PHP 를 다시 설치할 준비를 한다. 우선은 phpinfo 에 나온 configure command를 기록해두자. 버전이 업그레이드 되어도 이 command 가 동일하다면 작업에 큰 어려움이 없다. 물론! php.ini 는 반드시 백업해 두자.

command 에 --with-curl=/usr/local/curl 을 추가하면 된다

필자가 사용하던 PHP 버전은 5.2.9 인데, 5.3 버전으로 업그레이드가 됐다. 물론 5.3 버전을 설치하는게 낫지만. 5.2 버전도 충분하므로 가장 마지막 버전인 5.2.13을 설치하기로 했다.

curl 과 마찮가지로 wget 으로 파일을 받고 압축을 푼다음

위에서 만든 command 라인을 사용해 PHP 환경 설정을 구축한다

여기서 주의할 것은 curl 과 달리 PHP 는 현재 서비스 중인 핵심 파츠이므로 반드시 현재 설정을 테스트 하는게 좋다.

크리티컬한 문제였다면 더이상 진행하지 않는게 좋지만, 무시해도 되는 경고가 발생했으므로 PHP 를 설치한다.

 

 

#. 어플리케이션 등록하기

 

이번 과정을 트위터 인증키를 받기 위한 과정이다.

우선 http://twitter.com/apps/new 를 방문해 내용을 입력하자. 뭐, 대강 입력해도 나중에 수정할 수 있는 만큼 크게 신경쓰지 않아도 된다.


  • Application Name
    : 프로그램이름을 입력하시면 됩니다. 기존에 같은 이름으로 등록되어 있는 경우에는 다른 이름으로 바뀌서 등록해야 됩니다.
  • Description
    : 프로그램에 대한 간단한 설명인데 10자 이상입니다.
  • Application Website
    : 프로그램 홈페이지입니다. 필수입력이기때문에 없는 경우 그냥 대충 아무거나 집어넣으시면 됩니다.
  • Application Type
    : 프로그램 타입에 맞게 Client나 Browser를 선택하시면 됩니다.
    * Browser를 선택하는 경우 추가적으로 Callback URL입력란이 있습니다. Callback URL은 사용자 인증후 리턴값을 받을 URL를 입력하시면 됩니다.
  • Default Access Type
    : 읽기&쓰기 또는 읽기 권한을 선택하시면 됩니다.

 

** 여기서 조심해야 할 부분....

이번 예제는 callback.php가 존재하기 때문에.. Callback URL 부분에 해당 파일의 경로를 입력주시면 된다!

 

 

2. 예제 실행시키기

 

위 과정을 끝내면 아래와 같은 CONSUMER_KEY와 CONSUMER_SECRET 등 인증에 필요한 값을 보여준다.

아래의 값들은 모두 중요하게 사용되므로 창을 닫지 말자! (물론,, 창을 닫거라도 내용이 바뀌지 않으니 안심하도록!)

 

 

oauth의 config.php 에 포함된 2개의 값. CONSUMER_KEY 와 CONSUMER_SECRET 에 각각의 KEY 값을 입력하자. 그리고 OAUTH_CALLBACK 부분에는 Callback URL 부분에 입력했던 경로를 입력하자!

 

그리고 twitteroauth.php 에 인증 경로를 수정함으로써 모든 작업은 끝나게 된다.

 

 

3. 결과화면

 

index.php를 먼저 실행시키거나, connect.php를 먼저실행시키면... 

위 화면이 나오게 된다....  " Sign in with Twitter " 부분을 누르면 아래와 같은 결과 화면이 나오게 된다.

 

 

사용자이름, 비밀번호를 옳게 입력하면 아래와 같은 화면이 나오게 된다.

 


소스를 보게 되면 callback.php에서 AccessToken을 요청해서 받아오게 되는데, AccessToken과 AccessTokenSecret값만 있으면 글을 쓰거나 정보를 가져올 수 있게 됩니다.

인증을 취소할 경우를 대비해서 account/verify_credentials api를 요청해 인증이 살아있는지 확인을 해야합니다.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

 

#. 글 작성하기
index.php 의 소스를 잘 살펴보면 주석처리된 라인이 보인다. 이부분을 잘 살펴보면 oAuth 를 이용해 무엇을 할 수 있는지 파악할 수 있다.

그냥 보기에도 쉽게 이해할 수 있는 것으로 우리가 주로 사용하는 글 등록은 'statuses/update' 이며, 나머지는 삭제, 등록 등을 연결해 주는 부분이다. 이번 포스트는 글 등록만 설명하기로 한다. (삭제등은 너무 간단하다. ID 를 보내면 그냥 삭제되고 끝난다.)

 

 

주석을 풀고 동작시켜 보자.

너무나 간단하게 내 트위터에 "hello gloriashield"가 등록 되었음을 확인할 수 있다. 이번엔 한글을 포스팅 해 보자. 여기서 주의할 것은 트위터는 EUCKR 을 지원하고 있지 않으며, 모든 메세지는 UTF-8로 처리되기 때문에, 만약 내가 입력받은 데이터가 EUCKR 이라면 반드시 UTF-8로 변환해 줄 필요가 있다.

어떠한 결과를 얻을 수 있을까?

 

 

#. url줄이기

이 API Key 는  bit.ly의 API 에서 직접적으로 사용되므로 창을 닫지 말자.
그리고 코딩. 매번 사용되는 코드인 만큼 함수화 시키면 사용하기 편리하다. 저기서 apiKey 부분에 위에서 언급한 API Key 를 입력하면 된다.
그럼 http://www.s-tune.com/bloghttp://bit.ly/coUNFM 으로 치환되었음을 확인할 수 있다. 이를 응용해 트위터에 다시 글을 송출해 보자.

 

 

의문가는 사항이나... 궁금한 점은.... 물어봐 주길.. 바랍니다...

아니... 찾는편이 빠를껀가?ㅠㅠㅠ 저두 배우는 입장이지만... 오늘.. 많~~은.... 경험을 하게 되서.....

혹시나 같은 경험을 하는 분들이 계실까.. 최대한 자세히 적어봤습니다.

저처럼... 멍청이 되지 않길 바래요!!!!!!!                           천재로 변신~~~>_<

Posted by 아이맥스