android-使用来自本机登录页面的登录凭据实现Oauth2

android-使用来自本机登录页面的登录凭据实现Oauth2,第1张

概述我正在尝试实现基于Oauth2的Web服务.我有clientID,clientSecret,Authorization终结点,令牌终结点和回调Url(自定义架构指向android本机页面).当我检查其他基于Oauth2的API时,它具有登录URL,它将被重定向到登录网页.但在我的情况下,没有登录URL,但应将其重定向到本机登录页面,并且在

我正在尝试实现基于Oauth2的Web服务.我有clIEntID,clIEntSecret,Authorization终结点,令牌终结点和回调Url(自定义架构指向android本机页面).当我检查其他基于Oauth2的API时,它具有登录URL,它将被重定向到登录网页.但在我的情况下,没有登录URL,但应将其重定向到本机登录页面,并且在成功响应后,应将其重定向到登录本机页面.如何使用Oauth2获取访问令牌?
任何帮助将不胜感激.

解决方法:

从上面的评论中,假设您已经拥有ASP.NET WebAPI作为服务器端应用程序,并且如果您的Android客户端应用程序使用httpUrlConnection,则可以参考以下示例代码(当然,您需要进行更多修改以使它按您的要求工作):

            String address = "http://<IP>:<PORT>/token";            httpURLConnection urlConnection;            String requestbody;            Uri.Builder builder = new Uri.Builder();            Map<String, String> stringMap = new HashMap<>();            stringMap.put("grant_type", "password");            stringMap.put("username", "bnk");            stringMap.put("password", "bnk");            Iterator entrIEs = stringMap.entrySet().iterator();            while (entrIEs.hasNext()) {                Map.Entry entry = (Map.Entry) entrIEs.next();                builder.appendqueryParameter(entry.getKey().toString(), entry.getValue().toString());                entrIEs.remove();            }            requestbody = builder.build().getEncodedquery();            try {                URL url = new URL(address);                urlConnection = (httpURLConnection) url.openConnection();                urlConnection.setDoinput(true);                urlConnection.setDoOutput(true);                urlConnection.setRequestMethod("POST");                urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");                OutputStream outputStream = new bufferedoutputstream(urlConnection.getoutputStream());                BuffereDWriter writer = new BuffereDWriter(new OutputStreamWriter(outputStream, "utf-8"));                writer.write(requestbody);                writer.flush();                writer.close();                outputStream.close();                urlConnection.connect();                if (urlConnection.getResponseCode() == httpURLConnection.http_OK) {                    // do something...                } else {                    // do something...                }                // do something...            } catch (Exception e) {                e.printstacktrace();            }

更新:

如果您喜欢OkHttp,请参考以下工作代码:

    private class AccesstokenRequest extends AsyncTask<VoID, VoID, String> {        @OverrIDe        protected String doInBackground(VoID... voIDs) {            String accesstoken = null;            OkhttpJsonRequest JsonRequest = new OkhttpJsonRequest();            Requestbody requestbody = new FormEnCodingBuilder()                    .add("grant_type", "password")                    .add("username", "bnk")                    .add("password", "bnk123")                    .build();            try {                JsONObject JsonObject = JsonRequest.post("http://192.168.1.100:24780/token", requestbody);                if (!JsonObject.isNull("access_token")) {                    accesstoken = JsonObject.getString("access_token");                                        }            } catch (IOException | JsONException e) {                e.printstacktrace();            }            return accesstoken;        }        @OverrIDe        protected voID onPostExecute(String response) {            super.onPostExecute(response);            // do something such as storing the token for furture requests        }    }    public class OkhttpJsonRequest {        OkhttpClIEnt clIEnt = new OkhttpClIEnt();        JsONObject post(String url, Requestbody body) throws IOException, JsONException {            Request request = new Request.Builder()                    .url(url)                    .post(body)                    .build();            Response response = clIEnt.newCall(request).execute();            return new JsONObject(response.body().string());        }    }

希望这可以帮助!

总结

以上是内存溢出为你收集整理的android-使用来自本机登录页面的登录凭据实现Oauth2全部内容,希望文章能够帮你解决android-使用来自本机登录页面的登录凭据实现Oauth2所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1093565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存