Twitter oAuth callbackUrl-로컬 호스트 개발


112

Twitters oAuth의 콜백 URL을 로컬 호스트 개발 환경에 연결하는 데 어려움을 겪고있는 사람이 있습니까? 최근에 비활성화 된 것 같습니다. http://code.google.com/p/twitter-api/issues/detail?id=534#c1

누구든지 해결 방법이 있습니까? 나는 정말로 내 개발을 멈추고 싶지 않습니다.


트위터 콜백 URL을 실제 웹 사이트 URL로 설정하여 나를 위해 일했습니다. localhost-> twitter 가입에서 테스트하는 동안 웹 사이트 URL 대신 localhost로 리디렉션되었습니다.
Sudhakar Krishnan

답변:


135

대안 1.

라이브 도메인이 로컬 호스트 IP를 가리 키도록 .hosts (Windows) 또는 etc / hosts 파일을 설정합니다. 예 :

127.0.0.1 xyz.com

여기서 xyz.com은 실제 도메인입니다.

대안 2.

또한이 기사에서는 URL 단축 서비스를 대신 사용하는 방법에 대한 팁을 제공합니다. 로컬 URL을 줄이고 결과를 콜백으로 제공하십시오.

대안 3.

또한 예를 들어 http://127.0.0.1:8080.NET 대신 Twitter에 콜백으로 제공하는 것으로 보입니다 http://localhost:8080.


3
이로 인해 다음 오류가 발생할 수 있습니다. 원격 서버에서 오류를 반환했습니다. (401) Unauthorized?
DevDave

터널이 없을 때 localhost는 어떻게 작동합니까? 실제로 로컬 컴퓨터에 맞지 않습니까?
Jack Tuck 2016 년

@JackTuck 콜백은 트위터 서버가 아닌 사용자 브라우저에서 호출됩니다.
푹신한

25

지난주에이 작업을 수행해야했습니다. 분명히 localhost작동하지 않지만 127.0.0.1Go가 나타납니다.

물론 이것은 당신이 트위터와 두 개의 응용 프로그램, 라이브 하나 등록하는 것으로 가정 www.mysite.com및 다른 127.0.0.1.



8

예, OAuth에서 발견 된 최근 보안 문제로 인해 사용 중지되었습니다. 현재 유일한 해결책은 두 개의 OAuth 애플리케이션을 만드는 것입니다. 하나는 프로덕션 용이고 다른 하나는 개발 용입니다. 개발 애플리케이션에서 라이브 대신 localhost 콜백 URL을 설정합니다.


방금 시도했지만 localhost : 3000 을 URL 형식으로 허용하지 않습니다 ...
David N. Welton

1
예, 이러한 URL을 필터링하는 것 같습니다. :( 그러나 사용자 정의 콜백 URL에 대한 지원이 돌아 - 아마 그들이 거기에 지원하고 있습니다.
arikfr

8

콜백 URL이 수정되었습니다.

http://localhost:8585/logintwitter.aspx

로 변환하다

http://127.0.0.1:8585/logintwitter.aspx

7

이것이 내가 한 방법입니다.

등록 된 콜백 URL : http://127.0.0.1/Callback.aspx

   OAuthTokenResponse authorizationTokens = 
        OAuthUtility.GetRequestToken(ConfigSettings.getConsumerKey(), 
                                     ConfigSettings.getConsumerSecret(), 
                                     "http://127.0.0.1:1066/Twitter/Callback.aspx");

ConfigSettings :

public static class ConfigSettings
{
    public static String getConsumerKey()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    }

    public static String getConsumerSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    }

}

Web.config :

<appSettings>

    <add key="ConsumerKey" value="xxxxxxxxxxxxxxxxxxxx"/>
    <add key="ConsumerSecret" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>

</appSettings>

프로젝트의 '동적 포트 사용'속성을 'false'로 설정하고 대신 정적 포트 번호를 입력하세요. (나는 1066을 사용했습니다).

이게 도움이 되길 바란다!


7

http://smackaho.st 사용

이것이하는 일은 127.0.0.1에 대한 간단한 DNS 연결로 localhost 또는 127.0.0.1의 필터를 우회 할 수 있습니다.

smackaho.st. 127.0.0.1에서 28800

따라서 링크를 클릭하면 로컬 웹 서버에있는 정보가 표시됩니다 (없으면 404가 표시됩니다). 물론 원하는 페이지 / 포트로 설정할 수 있습니다.

http://smackaho.st:54878/twitter/callback


6
smackaho.st는 더 이상 사용할 수 없습니다 . tbaggery.com/2010/03/04/smack-a-ho-st.html . 대신 lvh.me를 사용하십시오. localhost로 직접 이동합니다.
Justin

5

내 로컬 호스트에서 Twitter 콜백 URL로 작업했습니다. 가상 호스트를 만드는 방법을 모르는 경우 (중요) Ampps를 사용하십시오. 그는 정말 멋지고 쉽습니다. 몇 단계 만 거치면 자신의 가상 호스트가 있고 모든 URL이 작동합니다. 예를 들면 :

  1. 앰프 다운로드 및 설치

  2. 새 도메인을 추가하십시오. (여기에서 예를 들어 twitter.local로 설정할 수 있습니다.) 이는 가상 호스트가 http : //twitter.local이 되고 3 단계 후에 작동 함을 의미합니다 .

  3. 나는 Win에서 작업하고 있으므로 호스트 파일-> C : \ Windows \ System32 \ Drivers \ etc \ hosts로 이동하여 다음 줄을 추가하십시오. 127.0.0.1 twitter.local

Ampps를 다시 시작하면 콜백을 사용할 수 있습니다. 일부 프레임 워크 MVC를 사용 중이거나 htaccess URL 재 작성이있는 경우에도 모든 URL을 지정할 수 있습니다.

이 도움을 바랍니다! 건배.


팁 고마워. 리눅스에서 단지 개발 도메인 이름을 / etc / 호스트에 추가
jeremyvillalobos

3

로컬로 개발할 때 항상 작업중인 프로젝트를 반영하는 로컬 호스팅 개발 이름을 설정합니다. xampp \ apache \ conf \ extra \ httpd-vhosts.conf를 통해 xampp에서 설정 한 다음 \ Windows \ System32 \ drivers \ etc \ hosts에서도 설정했습니다.

따라서 example.com에 대한 로컬 개발 사이트를 설정하는 경우이 두 파일에서 example.dev로 설정합니다.

짧은 답변 : 이 URL이 제대로 설정되면 Twitter 애플리케이션을 설정할 때이 URL ( http://example.dev )을 실제 (로컬이 아닌) 것처럼 처리 할 수 ​​있습니다.

비슷한 답변이 여기에 제공되었습니다 : https://dev.twitter.com/discussions/5749

직접 견적 (강조 추가) :

애플리케이션 세부 정보 페이지에서 인식하는 도메인 이름과 함께 유효한 URL을 제공 할 수 있습니다. OAuth 1.0a를 사용하려면 흐름의 요청 토큰 단계에서 oauth_callback 값을 보내야하며 해당 단계 에서 동적 locahost 기반 콜백 을 수락합니다 .

이것은 나에게 매력처럼 작동했습니다. 도움이 되었기를 바랍니다.


3

Fiddler로 매우 편리하게 수행 할 수 있습니다 .

  • 열기 메뉴 도구> 호스트 ...
  • 과 같은 줄을 삽입하고 127.0.0.1 your-production-domain.com"Enable remapping of requests ..."가 선택되어 있는지 확인합니다. 를 누르는 것을 잊지 마십시오 Save.
  • 실제 프로덕션 서버에 액세스해야하는 경우 Fiddler를 종료하거나 다시 매핑을 비활성화하면됩니다.
  • Fiddler를 다시 시작하면 다시 매핑이 켜집니다 (선택된 경우).

즐거운 보너스는 다음과 같이 사용자 지정 포트를 지정할 수 127.0.0.1:3000 your-production-domain.com있다는 것입니다 . (hosts 파일을 통해이를 달성하는 것은 불가능합니다). 또한 IP 대신 모든 도메인 이름 (예 :)을 사용할 수 있습니다 localhost.

이렇게하면 트위터 앱을 한 번만 등록 할 수 있습니다 (필수는 아님) (로컬 개발 및 프로덕션에 동일한 키를 사용해도 괜찮은 경우).


2

TwitterAPIExchange.php 에서이 함수를 180 번 줄에서 편집하십시오.

public function performRequest($return = true)
{
    if (!is_bool($return)) 
    { 
        throw new Exception('performRequest parameter must be true or false'); 
    }

    $header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');

    $getfield = $this->getGetfield();
    $postfields = $this->getPostfields();

    $options = array( 
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_HEADER => false,
        CURLOPT_URL => $this->url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false
    );

    if (!is_null($postfields))
    {
        $options[CURLOPT_POSTFIELDS] = $postfields;
    }
    else
    {
        if ($getfield !== '')
        {
            $options[CURLOPT_URL] .= $getfield;
        }
    }

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    if ($return) { return $json; }
}

여기에서 TwitterAPIExchange.php를 다운로드 할 수 있습니다. github.com/J7mbo/twitter-api-php
Helper

2

나는 똑같은 문제를 겪었고 localhost를 유효한 콜백 URL로 제공 할 수 없었습니다. 그래서 개발자를 돕기 위해 간단한 도메인을 만들었습니다 : https://tolocalhost.com

모든 경로를 필요한 localhost 도메인 및 포트로 리디렉션합니다. 다른 개발자에게 유용 할 수 있기를 바랍니다.


훌륭한 리소스이지만, 귀하의 도메인은 URL 끝에 "/"를 추가하여 경우에 따라 404로 연결됩니다. 고쳐 주 시겠어요? 예를 들어 "localhost / somename /? <response>로 리디렉션되지만"localhost / somename? <response>
Channa

@Channa 나는 이것을 재현하려고했지만 스크립트가 올바르게 작동하는 것 같습니다. 어떤 브라우저를 사용하고 있습니까? Chrome, Safari, Firefox를 사용해 보았는데 예상대로 작동합니다.
Jørgen

Chrome과 Firefox 모두에서 나에게 발생합니다. 이것은 내가 귀하의 페이지에 넣은 호스트 이름입니다 " localhost : 8080 / dashboard / twitterRedirect.jsp "하지만 리디렉션되면 " localhost : 8080 / dashboard / twitterRedirect.jsp /… "로 이동합니다. 질문 앞에 "/"기호를 유의하세요. 표. 그것은 나에게 (404)를 보내 내 응용 프로그램의 원인이됩니다
Channa

1
@Channa 호스트 이름 필드에 전체 URL을 입력해서는 안됩니다. 그것은 호출됩니다 : hostname, not URL ;-) 아이디어는 'localhost'를 my.localhost.bla와 같은 것으로 재정의 할 수 있다는 것입니다. 그러면 localhost 대신 그것을 사용할 것입니다. 귀하의 경우 호스트 필드는 localhost 여야합니다. 포트를 8080으로 설정하고 리디렉션을 구성하여 tolocalhost.com/dashboard/twitterRedirect.jsp로 리디렉션합니다. localhost : 8080 / dashboard / twitterRedirect.jsp
Jørgen

2

요즘 http://127.0.0.1도 일을 멈춘 것 같습니다 . 간단한 해결책은 항상 가리키는 http://localtest.me대신 사용하는 것입니다. 그리고 임의의 하위 도메인을 여기에 추가 할 수도 있습니다.http://localhost127.0.0.1127.0.0.1

웹 사이트 보기


1

트위터 앱에서 callbackurl 설정 : 127.0.0.1:3000 및 0.0.0.0 대신 127.0.0.1에 바인딩하도록 WEBrick 설정

명령 : rails s -b 127.0.0.1


1

이제 트위터 에서 값이 localhost있는 한 Callback URL설정 에있는 모든 것과 함께 허용 하는 것 같습니다.


1

나는 이것으로 어려움을 겪고 12 가지 솔루션을 따랐으며 결국 로컬 호스트에서 SSL API로 작업하기 위해해야 ​​할 일은 다음과 같습니다.

다운로드 이동 : cacert.pem 파일

에서 php.ini* 않은 주석과 변화 : curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • CLI에서 php.ini실행하여 컴퓨터에서 파일의 위치를 찾을 수 있습니다.php --ini
  • 쉽게 내 cacert.pem을 php.ini와 같은 디렉토리에 두었습니다.

1

다음은 내 랩톱에서 Facebook이 로컬 응용 프로그램과 함께 작동하도록하는 데 도움이 된 단계입니다.

  • goto apps.twitter.com
  • 이름, 앱 설명 및 사이트 URL 입력 참고 : localhost : 8000의 경우 전자가 작동하지 않으므로 127.0.0.1:8000을 사용하십시오.
  • 애플리케이션 TWITTER_REDIRECT_URI에 정의 된 콜백 URL과 일치하는 콜백 URL을 입력하십시오. 참고 : 예 : http://127.0.0.1/login/twitter/callback(localhost 가 작동하지 않음).
  • 중대한 사용자의 이메일 주소를 요청하려면 "개인 정보 보호 정책"및 "이용 약관"URL을 모두 입력하십시오.
  • 약관 동의 확인란을 선택하십시오.
  • [Twitter 애플리케이션 만들기]를 클릭합니다.
  • 상단의 [키 및 액세스 토큰] 탭으로 전환합니다.
  • "소비자 키 (API 키)"및 "소비자 비밀 (API 비밀)"을 애플리케이션의 TWITTER_KEY 및 TWITTER_SECRET에 복사합니다.
  • "권한"탭을 클릭하고 "읽기 전용", "읽기 및 쓰기"또는 "읽기, 쓰기 및 직접 메시지"로 적절하게 설정합니다 (단지 및 OAuth 로그인 "읽기 전용"의 경우 애플리케이션에 필요한 최소한의 방해 옵션을 사용하십시오. 충분한
  • 사용자의 이메일 주소를 OAuth 로그인 데이터로 반환하려면 "추가 권한"에서 "사용자의 이메일 주소 요청"확인란을 선택합니다 (대부분의 경우 예에 표시).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.