1
私は自分のアプリでGoogleとのログインを試みていますが、Googleログインをクリックしても既存のアカウントを表示しています。また、既存のアカウントを選択して署名するとアプリにリダイレクトされませんUriをもう一度リダイレクトして、既存のアカウントポップアップウィンドウを再度表示します。コードネーム1つのGoogleサインイン問題
以下は私のコードです: - すでにログインしている場合は、それだけでログインしているユーザーについての情報を示しているように
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();
});
}