【发布时间】:2016-09-07 03:54:23
【问题描述】:
android 中 OAuth 1.0a(单腿)身份验证的示例代码是什么? 有图书馆吗? . 我使用eclipse,我是android的新手。谁能帮我解释一下路径?
【问题讨论】:
-
你弄明白了吗?
-
@VipulKumar 感谢您的提醒。现在你可以看到答案了:)
android 中 OAuth 1.0a(单腿)身份验证的示例代码是什么? 有图书馆吗? . 我使用eclipse,我是android的新手。谁能帮我解释一下路径?
【问题讨论】:
new Thread() {
@Override
public void run() {
String RESOURCE_URL = "http://www.woocommerce.com/wp-json/wc/v1/api/";
String SCOPE = "*"; //all permissions
Response response;
OAuthRequest request;
String responsebody = "";
OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
.apiKey("yourConsumerKey")
.apiSecret("yourConsumerSecret")
.signatureType(SignatureType.QueryString)
.debug()
/*.scope(SCOPE).*/
.build();
request = new OAuthRequest(Verb.GET, RESOURCE_URL);
service.signRequest(new Token("", ""), request);
// Now let's go and ask for a protected resource!
Log.d("scribe","Now we're going to access a protected resource...");
try {
response = request.send();
if (response.isSuccessful()) {
responsebody = response.getBody();
Log.v("response", responsebody);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
此代码是从上面更新的,上面的代码正在从 wordpress Woocommerce API 获取 JSON。 但是,如果您想知道如何使用 Thread,这就是答案。 我添加 Log.v 以查看 json 响应。
【讨论】:
回答我自己的问题:
创建一个名为“OneLeggedApi10”的类并在其中复制以下代码:
import org.scribe.builder.api.DefaultApi10a;
import org.scribe.model.Verb;
import org.scribe.model.Token;
public class OneLeggedApi10 extends DefaultApi10a {
@Override
public String getAccessTokenEndpoint() {
return null;
}
@Override
public String getRequestTokenEndpoint() {
return null;
}
@Override
public String getAuthorizationUrl(Token requestToken) {
return null;
}
@Override
public Verb getAccessTokenVerb() {
return Verb.GET;
}
@Override
public Verb getRequestTokenVerb() {
return Verb.GET;
}
}
现在您可以进行 OAuth 身份验证了:
String RESOURCE_URL = "http://yourDomain.com/wc-api/v3/orders";
String SCOPE = "*"; //all permissions
Response response;
OAuthRequest request;
String responsebody = "";
OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
.apiKey("your_key")
.apiSecret("your_apiSecret")
.signatureType(SignatureType.QueryString)
.debug()
/*.scope(SCOPE).*/
.build();
request = new OAuthRequest(Verb.GET, RESOURCE_URL);
service.signRequest(new Token("", ""), request);
// Now let's go and ask for a protected resource!
Log.d("scribe","Now we're going to access a protected resource...");
try{
response = request.send();
if (response.isSuccessful()) {
responsebody = response.getBody();
}
} catch (Exception e) {
e.printStackTrace();
}
请注意,如果您没有在 AsyncTask 中使用上述代码,则将 request.send() 部分放在线程中(实际上是整个 try_catch 部分)以避免在主线程中运行异常
李>最后如果你想发送数据,例如在你想更新订单的情况下,替换
request = new OAuthRequest(Verb.GET, RESOURCE_URL);
这些行:
String payload = yourJsonOBJ.toString();
request = new OAuthRequest(Verb.PUT, RESOURCE_URL);
request.addHeader("Content-Type", "application/json");
request.addPayload(payload);
更多信息在WooCommerce Documentation site
希望对您有所帮助;)
祝你好运。。
【讨论】:
String 时,响应有一个限制。我怎样才能得到 JSON 格式的呢?