2014-03-06 44 views
4

我正在编写一个需要使用从客户端社交网络VKontakte获取的用户数据的应用程序。 我确实授权VKontakte。来自Android的VKontakte的用户信息

VKSdk.initialize(sdkListener, String.valueOf(idVK), VKAccessToken.tokenFromSharedPreferences(this, sTokenKey)); 

并得到了AccessToken。 现在我得到名称和电子邮件用户?

+0

不知道的名字,但我想你可能没有收到电子邮件,如果用户不公开 – mangusta

回答

8

您可以从用户请求的电子邮件范围,然后从访问令牌获取电子邮件:

String email = VKSdk.getAccessToken().email; 
String userId = VKSdk.getAccessToken().userId; 

//Get user info 
VKApi.users().get().executeWithListener(new VKRequest.VKRequestListener() { 
    @Override 
    public void onComplete(VKResponse response) { 
     VKApiUser user = ((VKList<VKApiUser>)response.parsedModel).get(0); 
     Log.d("User name", user.first_name + " " + user.last_name); 
    } 
}); 

但请记住,电子邮件只有在第一次访问请求后才可用。

老答案:

你不能收到一封电子邮件。这是不可用的。但你可以得到用户名:

VKApi.users().get().executeWithListener(new VKRequest.VKRequestListener() { 
    @Override 
    public void onComplete(VKResponse response) { 
     VKApiUser user = ((VKList<VKApiUser>)response.parsedModel).get(0); 
     Log.d("User name", user.first_name + " " + user.last_name); 
    } 
}); 

+0

也是你的如果您只需要它,就不会忘记将'VKScope.EMAIL'添加到'VKSdk.login(context,VKScope.EMAIL)' –

+0

@ArtemMostyaev。 –

+0

VKSdk.getAccessToken()现在不推荐使用,而是使用VKAccessToken.currentToken()。 – Yaroslav

0

登录用户 后,我用这个代码

final VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.FIELDS, "photo_200, contacts")); 
     request.executeWithListener(new VKRequest.VKRequestListener() { 
      @Override 
      public void onComplete(VKResponse response) { 
       VKApiUserFull user = ((VKList<VKApiUserFull>)response.parsedModel).get(0); 
       NavigationHelper.replaceFragment(getActivity().getSupportFragmentManager(), FrHome.newInstance(String.format("%s %s,", user.first_name, user.last_name), user.mobile_phone, user.photo_200), false); 
      } 
     }); 

列表字段,你可以在这里找到 https://vk.com/dev/users.get