Android getPhotoUrl()方法中的照片大小Google Identity toolkit

Android getPhotoUrl()方法中的照片大小Google Identity toolkit,android,google-identity-toolkit,google-identity,Android,Google Identity Toolkit,Google Identity,我使用Google Identity Toolkit登录,我注意到类GitkitUser.UserProfile检索照片url,但太小了。谷歌文档中没有提到任何关于照片大小的内容 例如,对于Facebook登录,getPhotoUrl()方法返回: 例如,对于Gmail登录,getPhotoUrl()方法返回: 删除Gmail照片url中的/s96-c(或替换为/s200-c)看起来很大,但我需要一个Facebook照片的解决方案。您可以使用idToken在IDP(Facebook id)

我使用Google Identity Toolkit登录,我注意到类GitkitUser.UserProfile检索照片url,但太小了。谷歌文档中没有提到任何关于照片大小的内容

例如,对于Facebook登录,getPhotoUrl()方法返回:

例如,对于Gmail登录,getPhotoUrl()方法返回:


删除Gmail照片url中的/s96-c(或替换为/s200-c)看起来很大,但我需要一个Facebook照片的解决方案。

您可以使用idToken在IDP(Facebook id)获取用户的标识符

请参阅用户[]。providerUserInfo[]。federatedId,网址为

然后使用facebookId获取大帐户图片,使用


{facebookId}/picture?type=large

android的解决方案是获取federatedId,然后调用:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        client = GitkitClient.newBuilder(this, new GitkitClient.SignInCallbacks() {
            @Override
            public void onSignIn(IdToken idToken, GitkitUser user) {
                DataStorage.getInstance().setLastToken(idToken.getTokenString());
                Configuration config = Configuration.fromMetaData(AppInfo.getAppInfo(LoginActivity.this).metaData);
                ApiClient apiClient = new ApiClient(config.getApiKey(), AppInfo.getAppInfo(LoginActivity.this), config.getServerWidgetUrl());
                final GetAccountInfo.Request request = apiClient.newGetAccountInfoRequest(idToken);

                new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... params) {
                        GetAccountInfo.Response accountInfo = request.execute();

                        JSONArray users = accountInfo.getJsonResponse().optJSONArray("users");
                        JSONObject user = users == null ? null : users.optJSONObject(0);
                        String email = user == null ? null : user.optString("email");
                        if (email != null) {
                            JSONArray providerUserInfo = user.optJSONArray("providerUserInfo");
                            if (providerUserInfo != null && providerUserInfo.length() != 0) {
                                for (int i = 0; i < providerUserInfo.length(); ++i) {
                                    JSONObject userInfo = providerUserInfo.optJSONObject(i);
                                    if (userInfo != null) {
                                        try {
                                            String userInfoString = userInfo.getString("federatedId");
                                            if(userInfoString.contains("facebook.com")) {
                                                int lastSlash = userInfoString.lastIndexOf("/");
                                                if(lastSlash != -1) {
                                                    String federatedIdFacebook = userInfoString.substring(lastSlash + 1, userInfoString.length());
                                                    Log.i("federatedIdFacebook", federatedIdFacebook);
                                                }
                                                break;
                                            }
                                        } catch (JSONException e) {
                                            Log.e("LoginActivity", e.getMessage());
                                        }
                                    }
                                }
                            }
                        }
                        return null;
                    }
                }.execute();


            }

            @Override
            public void onSignInFailed() {
                Toast.makeText(LoginActivity.this, "Sign in failed", Toast.LENGTH_LONG).show();
            }
        }).build();
    }
{federatedId}/picture?类型=大

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        client = GitkitClient.newBuilder(this, new GitkitClient.SignInCallbacks() {
            @Override
            public void onSignIn(IdToken idToken, GitkitUser user) {
                DataStorage.getInstance().setLastToken(idToken.getTokenString());
                Configuration config = Configuration.fromMetaData(AppInfo.getAppInfo(LoginActivity.this).metaData);
                ApiClient apiClient = new ApiClient(config.getApiKey(), AppInfo.getAppInfo(LoginActivity.this), config.getServerWidgetUrl());
                final GetAccountInfo.Request request = apiClient.newGetAccountInfoRequest(idToken);

                new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... params) {
                        GetAccountInfo.Response accountInfo = request.execute();

                        JSONArray users = accountInfo.getJsonResponse().optJSONArray("users");
                        JSONObject user = users == null ? null : users.optJSONObject(0);
                        String email = user == null ? null : user.optString("email");
                        if (email != null) {
                            JSONArray providerUserInfo = user.optJSONArray("providerUserInfo");
                            if (providerUserInfo != null && providerUserInfo.length() != 0) {
                                for (int i = 0; i < providerUserInfo.length(); ++i) {
                                    JSONObject userInfo = providerUserInfo.optJSONObject(i);
                                    if (userInfo != null) {
                                        try {
                                            String userInfoString = userInfo.getString("federatedId");
                                            if(userInfoString.contains("facebook.com")) {
                                                int lastSlash = userInfoString.lastIndexOf("/");
                                                if(lastSlash != -1) {
                                                    String federatedIdFacebook = userInfoString.substring(lastSlash + 1, userInfoString.length());
                                                    Log.i("federatedIdFacebook", federatedIdFacebook);
                                                }
                                                break;
                                            }
                                        } catch (JSONException e) {
                                            Log.e("LoginActivity", e.getMessage());
                                        }
                                    }
                                }
                            }
                        }
                        return null;
                    }
                }.execute();


            }

            @Override
            public void onSignInFailed() {
                Toast.makeText(LoginActivity.this, "Sign in failed", Toast.LENGTH_LONG).show();
            }
        }).build();
    }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
client=GitkitClient.newBuilder(这是新的GitkitClient.SignInCallbacks(){
@凌驾
public void onSignIn(IdToken IdToken,GitkitUser用户){
DataStorage.getInstance().setLastToken(idToken.getTokenString());
Configuration config=Configuration.fromMetaData(AppInfo.getAppInfo(LoginActivity.this.metaData));
ApiClient ApiClient=new ApiClient(config.getApiKey()、AppInfo.getAppInfo(LoginActivity.this)、config.getServerWidgetUrl());
final GetAccountInfo.Request请求=apiClient.newGetAccountInfoRequest(idToken);
新建异步任务(){
@凌驾
受保护的Void doInBackground(Void…参数){
GetAccountInfo.Response accountInfo=request.execute();
JSONArray users=accountInfo.getJsonResponse().optJSONArray(“用户”);
JSONObject user=users==null?null:users.optJSONObject(0);
字符串email=user==null?null:user.optString(“电子邮件”);
如果(电子邮件!=null){
JSONArray providerUserInfo=user.optJSONArray(“providerUserInfo”);
if(providerUserInfo!=null&&providerUserInfo.length()!=0){
对于(int i=0;i
此解决方案适用于web,我使用的是android,我想要一个直接解决方案。但你给了我一个想法,需要一些改变,但可以工作。