java - Magento oauth 与 android

标签 java android oauth magento-1.9 scribe

我正在使用 scribe 库向 Magento 注册 android。

但是我得到了错误:

org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<p>The requested URL /oauth/initiate was not found on this server.</p>

但我的 key 、 secret 和网址都是正确的。我正确定义了用户和角色。

我引用了这里:https: //gmartinezgil.wordpress.com/2013/08/05/using-the-magento-rest-api-in-java-with-scribe/

我的代码是这样的: 从 Activity 调用 Asyntask:new OauthAsyncTask().execute();

然后我的任务是:

public class OauthAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            try {
                // oauth for magento api access
                OAuthService service = new ServiceBuilder()
                        .provider(MagentoThreeLeggedOAuth.class)
                        .apiKey(MAGENTO_API_KEY)
                        .apiSecret(MAGENTO_API_SECRET)
                        .build();

                Token requestToken = service.getRequestToken();

                String authorizationUrl = service.getAuthorizationUrl(requestToken);

                Verifier verifier = new Verifier("Getting TOken");

                Log.e("authorizationUrl:", authorizationUrl);


                Token accessToken = service.getAccessToken(requestToken, verifier);

                Log.e("accessToken:", accessToken.toString());


                OAuthRequest request = new OAuthRequest(Verb.GET, "MAGENTO_REST_API_URL"+ "/products");
                service.signRequest(accessToken, request);
                Response response = request.send();

                Log.e("response:", response.toString());

            } catch (Exception e) {
                e.printStackTrace();
            }


            return null;
        }
    }

//授权类

public static final class MagentoThreeLeggedOAuth extends DefaultApi10a {
    private static final String BASE_URL = "http://myapp.com/";

    @Override
    public String getRequestTokenEndpoint() {
        return BASE_URL + "oauth/initiate";
    }

    @Override
    public String getAccessTokenEndpoint() {
        return BASE_URL + "oauth/token";
    }

    @Override
    public String getAuthorizationUrl(Token token) {
        return null;
    }


    }

请帮我解决这个问题。

最佳答案

问题很愚蠢但很棘手,我问我的 Magento 开发人员他用“http://myapp.com/”回答的 BASE URL 是什么,但遇到了上述问题,当我进一步搜索时,我发现有些用户使用BASE URL,如“http://myapp.com/magento”或“http://myapp.com/magento/index.php”等。所以我发现真正的路径是“http://myapp.com/index.php”,它没有指向基本网址。因此,有时当产品处于开发模式时,会发生此类问题,只需与 magento dev 确认确切路径即可。

关于java - Magento oauth 与 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765843/

相关文章:

java - 通过给定键断言 map 不包含空值

ruby-on-rails-3 - URI::InvalidURIError(错误的 URI(不是 URI?):):

android - 如何在一个屏幕上使用三个 fragment ?

node.js - 为什么在使用 Passport/Node Express 的 OAuth2Strategy 进行身份验证时出现 TokenError

oauth - 如何通过 TBA 身份验证请求 Netsuite RESTlet

java - 比较字符串

java - 我们可以使用 java.util.function 获取方法名称吗?

java - Spring MVC : how to implement DAO from custom interface

java - 为什么 "System.out.println"在 Android 中不起作用?

android - 按下后退按钮 android 时共享首选项数据丢失了吗?