J'ai été en mesure de suivre la danse oauth jusqu'à la toute dernière étape: J'ai un jeton de demande et un vérificateur oauth est renvoyé à mon application Android après que l'utilisateur a authentifié l'application dans le navigateur. Malheureusement, je ne suis pas en mesure d'acquérir le jeton d'accès final. C'est ce que j'essaie de faire dans cette toute dernière étape:Http erreur de connexion lors de la demande de jeton d'accès pour wordpress oauth1.0a en utilisant scribejava
// use the parameter your API exposes for the verifier
String oauthVerifier = uri.getQueryParameter("oauth_verifier");
// get requestToken from shared preferences
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
OAuth1RequestToken requestToken = new OAuth1RequestToken(
sharedPref.getString("WP_OAuthToken",""),
// sharedPref.getString("WP_OAuthTokenSecret","")
oauthVerifier
);
// request accessToken from API
OAuth1AccessToken accessToken = null;
try {
accessToken = service.getAccessToken(requestToken, oauthVerifier);
} ...
La toute dernière ligne ne fonctionne pas ici. logcat me dit
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:86)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
at java.net.InetAddress.getAllByName(InetAddress.java:752)
at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:187)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:156)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:98)
at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:345)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
at com.github.scribejava.core.httpclient.jdk.JDKHttpClient.doExecute(JDKHttpClient.java:104)
at com.github.scribejava.core.httpclient.jdk.JDKHttpClient.execute(JDKHttpClient.java:72)
at com.github.scribejava.core.oauth.OAuthService.execute(OAuthService.java:104)
at com.github.scribejava.core.oauth.OAuth10aService.getAccessToken(OAuth10aService.java:99)
at com.example.******.*********.LoginActivity.onResume(LoginActivity.java:132)
où .LoginActivity.onResume(LoginActivity.java:132)
est la dernière ligne de code ci-dessus. Dans la ligne 104 du JDKHttpClient.java, il est tenté d'exécuter connection.connect();
sur final HttpURLConnection connection = (HttpURLConnection) new URL(completeUrl).openConnection();
. C'est le point où mon application tombe en panne, lorsque j'essaie de déboguer l'erreur. La sortie de débogage est quelque chose comme
this = {[email protected]}
userAgent = null
headers = {[email protected]} size = 1
0 = {[email protected]} "Authorization" -> "OAuth oauth_consumer_key="pxKsS2wdw4uvPPR", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_timestamp="1506338204", oauth_nonce="292945226", oauth_verifier="DrZUpDOsdTN3nOUcP0ZIEsclBYx6", oauth_token="weCu9ejOkmOX9D4zB9zL62XESpe23Q", oauth_signature="%2B%2FV%2FwkmFFaFfmb%2Fc%3D""
httpVerb = {[email protected]} "POST"
completeUrl = "http://***wordpresspage***.de/oauth1/access"
bodyType = {[email protected]} "BYTE_ARRAY"
bodyContents = {byte[0]@4926}
connection = {[email protected]} "com.android.okhttp.internal.huc.HttpURLConnectionImpl:http://***wordpresspage***.de/oauth1/access"
client = {[email protected]}
fixedContentLength = -1
followUpCount = 0
handshake = null
httpEngine = null
httpEngineFailure = null
requestHeaders = {[email protected]}
namesAndValues = {[email protected]} size = 6
0 = "Authorization"
1 = "OAuth oauth_consumer_key="pxKsS2wdw4uvPPR", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_timestamp="1506338204", oauth_nonce="292945226", oauth_verifier="DrZUpDOsdTN3nOUcP0ZIEsclBYx6", oauth_token="weCu9ejOkmOX9D4zB9zL62XESpe23Q", oauth_signature="%2B%2FV%2FwkmFFaFfmb%2Fc%3D""
2 = "Content-Length"
3 = "0"
4 = "Content-Type"
5 = "application/x-www-form-urlencoded"
shadow$_klass_ = {[email protected]} "class com.android.okhttp.Headers$Builder"
shadow$_monitor_ = -1963988711
responseHeaders = null
route = null
urlFilter = {[email protected]}
chunkLength = -1
HttpURLConnection.fixedContentLength = -1
fixedContentLengthLong = -1
instanceFollowRedirects = true
method = "POST"
responseCode = -1
responseMessage = null
allowUserInteraction = false
connectTimeout = 0
connected = false
doInput = true
doOutput = false
ifModifiedSince = 0
readTimeout = 0
requests = null
url = {[email protected]} "http://***wordpresspage***.de/oauth1/access"
authority = "***wordpresspage***.de"
file = "/oauth1/access"
handler = {[email protected]}
hashCode = -1
host = "***wordpresspage***.de"
hostAddress = null
path = "/oauth1/access"
port = -1
protocol = "http"
query = null
ref = null
userInfo = null
shadow$_klass_ = {[email protected]} "class java.net.URL"
shadow$_monitor_ = -2041726017
useCaches = true
shadow$_klass_ = {[email protected]} "class com.android.okhttp.internal.huc.HttpURLConnectionImpl"
shadow$_monitor_ = -1950688533
Je ne légèrement changé les informations d'identification, car je ne veux pas d'informations sur mon site en cours de publication.
Je m'attendrais à ce que la connexion ci-dessus soit réussie et en outre de rendre le jeton d'accès pour mon api wordpress. Lorsque j'envoie les mêmes informations d'identification dans Postman, la demande aboutit. Alors, où est le problème, quand j'utilise scribejava? Est-ce parce que scribejava envoie le oauth_verifier dans l'en-tête de la requête et dans Postman vous pouvez l'envoyer comme paramètre url?
Gosh .. Merci pour la réponse rapide! Maintenant ça marche .. –