有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java代码名一谷歌登录问题

我试图在我的应用程序中使用谷歌登录,但当我点击谷歌登录时,它会显示现有帐户,当我选择现有帐户进行签名时,它不会重定向到应用程序或重定向Uri,它会一次又一次地显示现有帐户弹出窗口

下面是我的代码:-

google.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent evt) {
                            String clientId = "XXXXXXXXX-kv0h8ef3k0ppo9lda1bpopjacfde4ds5.apps.googleusercontent.com";
                    String redirectURI = "https://www.codenameone.com/oauth2callback";                
                    String clientSecret = "XXXXXXXXXXXXQE1quZ";

                    Login gc = GoogleConnect.getInstance();
                    gc.setClientId(clientId);
                    gc.setRedirectURI(redirectURI);
                    gc.setClientSecret(clientSecret);
                    userlogin = gc;
                   gc.setCallback(new LoginListener(LoginListener.GOOGLE));
                    if(!gc.isUserLoggedIn()){
                        gc.doLogin();
                    }else{
                        showGoogleUser(gc.getAccessToken().getToken());
                    }

                }
            });


public class LoginListener extends LoginCallback {
    public static final int FACEBOOK = 0;

        public static final int GOOGLE = 1;

        private int loginType;

        public LoginListener(int loginType) {
            this.loginType = loginType;
        }

        public void loginSuccessful() {

            try {
                AccessToken token = userlogin.getAccessToken();
                if (loginType == FACEBOOK) {
                    showFacebookUser(token.getToken());
                } else if (loginType == GOOGLE) {
                    showGoogleUser(token.getToken());
                }

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

        }

        public void loginFailed(String errorMessage) {
            Dialog.show("Login Failed", errorMessage, "Ok", null);
        }



 private void showGoogleUser(String token){
        Dialog.show("Login","Login successful","Ok","");
        ConnectionRequest req = new ConnectionRequest();
        req.addRequestHeader("Authorization", "Bearer " + token);
        req.setUrl("https://www.googleapis.com/plus/v1/people/me");
        req.setPost(false);
        InfiniteProgress ip = new InfiniteProgress();
        Dialog d = ip.showInifiniteBlocking();
        NetworkManager.getInstance().addToQueueAndWait(req);
        d.dispose();
        byte[] data = req.getResponseData();
        JSONParser parser = new JSONParser();
        Map map = null;
        try {
            map = parser.parseJSON(new InputStreamReader(new ByteArrayInputStream(data), "UTF-8"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        String name = (String) map.get("displayName");
        Map im = (Map) map.get("image");
        String url = (String) im.get("url");
        username.setText(name);
       userLabel.setIcon(URLImage.createToStorage((EncodedImage) user, url, url, URLImage.RESIZE_SCALE)); 


        TextArea search = new TextArea();
        Button searchbutton = new Button("Search");
         container12.add(search);
         container12.add(searchbutton);

         searchbutton.addActionListener((evt) -> {
         String searchstr = search.getText();
         ConnectionRequest req2 = new ConnectionRequest()
         {
             @Override
             protected void readResponse(InputStream input) throws IOException {
                InputStreamReader reader = new InputStreamReader(input);
                JSONParser parser1 = new JSONParser();
                Map<String, Object> parsed2 = parser1.parseJSON(reader);
                Log.p(parsed2.toString());
                ArrayList array = (ArrayList)parsed2.get("items");
                JSONArray items_array = new JSONArray(array);


                ArrayList<String> arrayList = new ArrayList<>();
        try{
        JSONArray array2 = new JSONArray(items_array.toString());
        for(int i =0; i<array2.length() ; i++){
            JSONObject jsonobject = array2.getJSONObject(i);

               String name = jsonobject.getString("displayName");
               String image = (String) ((JSONObject) jsonobject.get("image")).getString("url");

                       Image searchimage = theme.getImage("user.png");
                        Label searchLabel = new Label(searchimage);
                        searchLabel.setIcon(URLImage.createToStorage((EncodedImage) user, image, image, URLImage.RESIZE_SCALE)); 
                        Label namelabel = new Label(name);

                        container12.add(namelabel);
                        container12.add(searchLabel);
                    } 
        }catch (JSONException ex) {
                       ex.printStackTrace();
                    }
                }


         };
         req2.setPost(false);
         req.addRequestHeader("Authorization", "Bearer " + token);
         req2.setUrl("https://www.googleapis.com/plus/v1/people");
         req2.addArgument("query", search.getText());
         req2.addArgument("key", googleApiKey);
        InfiniteProgress ip2 = new InfiniteProgress();
        Dialog d2 = ip2.showInifiniteBlocking();
        NetworkManager.getInstance().addToQueueAndWait(req2);
        d2.dispose();

         });




    }

共 (1) 个答案

  1. # 1 楼答案

    如果你已经登录,你的代码看起来只是显示了登录用户的信息。如果您想以其他用户身份登录,则需要先使用GoogleConnect.doLogout()方法注销