2012-02-29 4 views
1

트위터로 연결할 Chrome 확장 프로그램을 개발 중입니다. 나는 이것을 위해 Google oAuth tutorial을 사용하고 있습니다.Google 크롬 확장 프로그램에서 null의 'chromeExOAuthConfig'속성을 읽을 수 없습니다.

트위터에서 권한이 부여 된 사용자를 얻으려면 도움이 필요합니다. 그리고 어딘가에 자격 증명을 저장하여 앱에서 tweeting에 사용할 수 있습니다. 나는 이것에 초보적이며, 나는 방향이 필요하다. 나는 다음과 같은 방법으로 구성했다. 권한 부여 프로세스를 시작합니다.

그러나 Twitter 인증을 보내지 않습니다. 이 인증 방법을 호출 할 때. 내가 제대로하고 있니?

여기에 포인터가 필요합니다. chrome_ex_oauth.html도 다운로드했습니다. 어떤 콜백으로 호출됩니다. 권리?

내가 알지 못하는 ... 그 액세스 토큰과 비밀을 모든 승인 된 사용자에 대해 저장하고 tweeting에 사용할 때.

<script type="text/javascript" src="chrome_ex_oauthsimple.js"></script> 
    <script type="text/javascript" src="chrome_ex_oauth.js"></script> 

jQuery(function() { 

      var oauth = ChromeExOAuth.initBackgroundPage({ 
        'request_url': 'https://api.twitter.com/oauth/request_token', 
        'authorize_url': 'https://api.twitter.com/oauth/authorize', 
        'access_url': 'https://api.twitter.com/oauth/access_token', 
        'consumer_key': '---', 
        'consumer_secret': '---', 
        'scope': '', 
        'app_name': 'Tweet' 
       }); 
      jQuery('#connect').click(function(){ 

       oauth.authorize(install);  
      }); 
     }); 

     function install() { 
      alert('success') 
     } 

     function callback(resp, xhr) { 
      // ... Process text response ... 
     }; 

편집 :

oauth.authorize 전화를받을. 그리고 리디렉션 페이지가 나타납니다. 하지만 '리디렉션 중 ...'에 붙어 있습니다. 오류 콘솔에 다음 오류가 표시됩니다.

가 null enter image description here

답변

1

의 특성 'chromeExOAuthConfig'을 읽을 수 없습니다 나는 크롬의 OAuth 튜토리얼은 정말 비 대한 간접 발견했다. OAuth2를 사용하여 개인 GitHub 데이터를 가져 오는 확장 기능을 추가했습니다.

Here is the source (물론 injection.js와 adapter.html도 참조하십시오. 둘 다 jQuery와 별개이며 필수 항목 임).

나는 본질적으로 그냥 내 요구에 맞게이 solution 설계를 뒤집었다. 무슨 일

은 다음과 같습니다

  1. 당신은 당신의 응용 프로그램 ID와 승인을 요청.
  2. Twitter는 사용자가 로그인하여 애플리케이션을 인증하도록합니다.
  3. 트위터가 지정된 리디렉션 매개 변수로 리디렉션됩니다 (웹 페이지 또는 서버에 따라 내선 정보를 걱정하지 않으려는 경우 https://twitter.com/robots.txt에 리디렉션하도록 지정합니다. 아래로 내려 가면 문제가되지 않습니다.이 robots.txt 페이지는 어디에도 없습니다)
  4. 리디렉션 URL에 삽입 할 콘텐츠 스크립트를 추가하십시오. 스크립트가 쿼리 문자열을 가져 와서 어댑터 페이지 URL에 추가하고 리디렉션하게하십시오.
  5. 어댑터 페이지에서 쿼리 문자열의 액세스 코드를로드하고 액세스 코드와 응용 프로그램 비밀 번호로 트위터에 요청을 보냅니다. 모든 것이 올바르게 완료되면 사용자 액세스 토큰을 제공하는 트위터에서 콜백을 받게됩니다.
  6. 는, 확장에 토큰 로컬 스토리지를 저장 어댑터 페이지를 닫고

팝업이 열리면 이제 좋은, 당신은 트위터 API와 함께 사용하는 로컬 스토리지에서의 OAuth2 토큰을 얻을 수 있습니다.배경 페이지가 발견되지 않는 것처럼 나는 당신의 콘솔에서 볼 수있는에서 UPDATE

TO

Here is more detail about the OAuth2 flow.

답이 보인다. 확장 프로그램이 백그라운드 페이지를 실행합니까? 그렇다면 새로 추가 된 항목은 chrome : // extensions의 확장 프로그램 옆에있는 다시로드 버튼을 사용하여 확장 프로그램을 다시로드해야합니다. Chrome은 매니페스트에서 선언 한 내용을 변경하고 일반적으로 다시로드해야 할 때 매우 까다로운 작업입니다. 그러나 chrome.extensions.getBackgroundPage()는 표준 API 호출이므로 null을 반환하는 것이 문제입니다.

내 해결책을 들여다 보았습니까? 그것은 매우 잘 작동하고, 어댑터 페이지는 더 느린 연결 (사용자는 피드백과 같은)에 대한 로딩 진행 상황을 표시하도록 사용자 정의 할 수 있습니다. 또한 jQuery에 의존하지도 않습니다. 차이점을 알지는 못하지만 jQuery 라이브러리를 리디렉션 페이지로로드하면 스크립트를 가져와야하기 때문에 트랜잭션을 더 오래 걸릴 수 있습니다.

+0

@ jjNford 나는 내 물건을 실행할 수 있는지 여부를 망쳐 놓고 있었다. Chrome 환경 설정에서 내 확장 프로그램을 여러 번 다시로드했습니다. 그러나 그것은 나에게 같은 오류를 준다. 문제가 해결되지 않으면 다시 시작하는 코드가 표시됩니다. –

+0

@TahirAkram 볼 수 있도록 매니페스트 파일을 게시 할 수 있습니까? '{ "이름": jjNford @ – jjNford

+0

여기 내 매니페스트 파일입니다 "크롬에서 트윗" "버전": "1.0", "설명": "크롬에서 트윗." '브라우저 ": { "default_icon": "icon.png" \t "팝업": "popup.html" } "권한"[ "탭" \t "http://ajax.googleapis.com" \t "http : //*.twitter.com/*", \t "clipboardWrite" ] } 나는 사용자가 트위터 계정을 추가 할 다른 배경 페이지 (설정이라고 부름)에 있습니다. 그것은 내 주요 배경 페이지가 아니야. –

관련 문제