2010-07-08 4 views
3

나는 많은 다른 방법을 시도하고 OAuth로 JTwitter를 사용하는 자습서를 찾기 위해 인터넷 전체를 검색합니다. 여기에 나는 Jtwitter 및 표지판 모두가 만든 자바 빌더Android 용 간단한 JTwitter 예 :

에 항아리로

public class ShareGenerator extends Activity { 

    private static final String JTWITTER_OAUTH_KEY = "this_is_populated"; 
    private static final String JTWITTER_OAUTH_SECRET = "this_is_populated"; 

    Button menupopButton; 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.share); 
    this.setContentView(R.layout.share); 
    this.txShare = (TextView)this.findViewById(R.id.lblshare); 
    this.menupopButton = (Button)this.findViewById(R.id.menupop); 


    menupopButton.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 

     { 
      TwitterSend(); 

     } 
}); 

    } 

을 실행하는 간단한 버튼을 추가

다운로드를 달성 다음 단계를하고 난 내 클래스가 있습니다

public void TwitterSend() { 

       OAuthSignpostClient client = new OAuthSignpostClient(JTWITTER_OAUTH_KEY, JTWITTER_OAUTH_SECRET, "oob"); 
        Twitter jtwit = new Twitter("bob", client); 
        // open the authorisation page in the user's browser 
        client.authorizeDesktop(); 
        // get the pin 
        String v = client.askUser("Please enter the verification PIN from Twitter"); 
        client.setAuthorizationCode(v); 
        // Optional: store the authorisation token details 
        Object accessToken = client.getAccessToken(); 
        // use the API! 
        jtwit.setStatus("Messing about in Java"); 

      } 

그러나 OAuth 화면이 팝업 될 수도 없습니다. 도착하면 충돌합니다. 누구나 적어도 OAuth 화면을 볼 수 있습니까? 가져 오기를 올바르게 설정했습니다. 하지만 안드로이드에

// open the authorisation page in the user's browser 
client.authorizeDesktop(); 

데스크탑 PC에서 작동합니다 :

+0

Logcat에서 크래시에 대해 알려주는 내용을 확인하고 매니페스트에 인터넷 사용 권한이 있는지 확인하십시오. – Pentium10

+0

Logcat은 java.lang.NoClassDefFoundErrors를 말합니다 : java.awt.Desktop 그것은 client.authorizeDesktop()에서 실패하고 있습니다; – JuniorFlip

+0

setData() 메서드에서 url을 전달하기 위해 URI를 Uri로 변환 할 수 없습니다. 그렇게 할 제안이 있습니까? –

답변

3

문제는 java.awt.Desktop를 사용하는이 라인에 있습니다.

대신에 client.authorizeUrl();에서 URL을 가져 와서 사용자에게 보냅니다. 예 :

URI url = client.authorizeUrl(); 
Intent myIntent = new Intent(Intent.VIEW_ACTION); 
myIntent.setData(url); 
startActivity(myIntent); 

하지만 저는 Android 코더가 아닙니다. oob 대신 콜백을 사용하면 거의 확실하게 나아질 수 있습니다. 바라건대 다른 사람이 그것을 위해 코드를 제공 할 수 있습니다 ...

-2

이 게시물은

+5

당신은 모든 관련된 질문을 찾아서 같은 대답을 줄 것입니다, 안 그래요? – Will

1

다니엘은 꽤 좋은 출발점을 제공한다 [당신이 걱정하는 경우 레브 기록을 확인합니다]를 참조하십시오. 이것은 내가 내 안드로이드 응용 프로그램이 구현하는 방법입니다

OAuthSignpostClient authClient = new OAuthSignpostClient('apiKey','apiSecret','callbackUrl'); 

       java.net.URI jUrl = authClient.authorizeUrl(); 
       Uri.Builder uriBuilder = new Uri.Builder(); 
       uriBuilder.encodedPath(jUrl.toString()); 

       Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(jUrl.toString())); 
       startActivity(myIntent); 

물론, 나는 간결 등등 'apiKey'을 사용합니다. OAuthSignpostClient 생성자에서 자체 키, 비밀 및 콜백 URL을 사용해야합니다.

참고 : 새 의도를 시작하는 데 사용하는 Android.net.Uri에 JTwitter에서 제공하는 java.net.URI의 변환해야합니다.

이 후 콜백 URL을 캐치하고 트위터 API에서 가져올 사용자 토큰과 비밀을 사용하여 인 텐트 필터를 사용해야합니다.

+0

나는 왜 당신이 사용하지 않는 uriBuilder가있는 두 줄을 가지고 있는지 혼란스러워합니다. encodedPath에 숨겨진 결과가 있습니까? 아니면 뭔가 빠졌습니까? – Mikle