Android uygulamam için OAuth ayarlıyorum. Bunu test etmek için aşağıdakileri yaptım: Projem için signpost-core-1.2.1.1.jar ve signpost-commonshttp4-1.2.1.1.jar eklendi, "CommonsHttpOAuthConsumer tüketici" ve "CommonsHttpOAuthProvider sağlayıcısı" değişkenlerini ekledik ve düğmesi tıklandığında: aşağıdakiAndroid OAuth: RetrieveAccessToken() ile ilgili İstisna()
consumer = new CommonsHttpOAuthConsumer("xxx", "yyy");
provider = new CommonsHttpOAuthProvider("https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
"https://api.twitter.com/oauth/authorize");
oauthUrl = provider.retrieveRequestToken(consumer, "myapp://twitterOauth");
persistOAuthData();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(oauthUrl)));
persistOAuthData() yapar:
protected void persistOAuthData()
{
try
{
FileOutputStream providerFOS = this.openFileOutput("provider.dat", MODE_PRIVATE);
ObjectOutputStream providerOOS = new ObjectOutputStream(providerFOS);
providerOOS.writeObject(this.provider);
providerOOS.close();
FileOutputStream consumerFOS = this.openFileOutput("consumer.dat", MODE_PRIVATE);
ObjectOutputStream consumerOOS = new ObjectOutputStream(consumerFOS);
consumerOOS.writeObject(this.consumer);
consumerOOS.close();
}
catch (Exception e) { }
}
Yani, tüketici ve sağlayıcı tarayıcısını açmadan önce kaydedilir, here tarif gibi. onResume() yönteminde
Ben sağlayıcı ve tüketici verilerini yüklemek ve aşağıdakileri yapın:Uri uri = this.getIntent().getData();
if (uri != null && uri.getScheme().equals("myapp") && uri.getHost().equals("twitterOauth"))
{
verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
if (!verifier.equals(""))
{
loadOauthData();
try
{
provider.retrieveAccessToken(consumer, verifier);
}
catch (OAuthMessageSignerException e) {
e.printStackTrace();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
} catch (OAuthCommunicationException e) {
e.printStackTrace();
}
}
}
Yani, neyin işe yaradığını: 1) Bir requestToken ve requestSecret olsun. 2) OauthUrl'i alıyorum. 3) Uygulamamı yönlendirmek için tarayıcı sayfasına yönlendirildim 4) Uygulamama yönlendiriliyor alıyorum. 5) Doğrulayıcıyı alıyorum. Ancak retrieveAccessToken (tüketici, doğrulayıcı) çağrısı, "Hizmet sağlayıcısıyla iletişim başarısız oldu: null" yazan bir OAuthCommunicationException ile başarısız oluyor.
Sebep ne olabileceğini bilen var mı? Bazı insanlar requestToken almakta zorluk çekiyor gibi görünüyor, ama bu sadece iyi çalışıyor. Ben app da dahil olmak üzere bir sorun olabilir acaba ben multipart upload için gereken apache-mime4j-0.6.jar ve httpmime-4.0.1.jar dahil.
çok teşekkürler ... ... büyük iş Manuel – Panache
Yani sizin durumda, "requestToken", "customer.setOkenWithSecret" öğesi "oauthUrl" olarak ayarlandı mı? ve tokenSecret'in ne olduğunu sorabilir miyim? Teşekkürler :) – dumbfingers
Üzgünüm, sanırım bunu çözebilirim, 'requestToken' kullanılarak elde edildi' customer.getToken() '? – dumbfingers