【发布时间】:2016-02-21 17:49:52
【问题描述】:
我正在使用 SocialAuth 库来集成 fb/linkedin。我已成功登录,但我能够获取用户个人资料。我的代码如下:
public class MainActivity extends Activity implements View.OnClickListener{
Button fb,linkedIn;
SocialAuthAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fb=(Button)findViewById(R.id.button);
linkedIn=(Button)findViewById(R.id.button2);
fb.setOnClickListener(this);
linkedIn.setOnClickListener(this);
adapter = new SocialAuthAdapter(new ResponseListener());
adapter.addProvider(SocialAuthAdapter.Provider.FACEBOOK,R.drawable.facebook);
adapter.addProvider(SocialAuthAdapter.Provider.LINKEDIN,R.drawable.linkedin);
try{
adapter.addConfig(SocialAuthAdapter.Provider.FACEBOOK,"901453509923310","29940b7c91f8a9d4db7e72f7e3e72e1d","publish_actions");
}
catch(Exception ex)
{
Log.e("Adding config",ex.toString());
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button:
adapter.authorize(MainActivity.this, SocialAuthAdapter.Provider.FACEBOOK);
break;
case R.id.button2:
break;
}
}
private final class ResponseListener implements DialogListener{
@Override
public void onComplete(Bundle bundle) {
String token=adapter.getCurrentProvider().getAccessGrant().getKey();
Log.e("KEY ",token);
adapter.getUserProfileAsync(new ProfileDataListener());
}
@Override
public void onError(SocialAuthError socialAuthError) {
Log.e("ERRROR ", socialAuthError.getMessage());
}
@Override
public void onCancel() {
}
@Override
public void onBack() {
}
}
private final class ProfileDataListener implements SocialAuthListener<Profile> {
@Override
public void onExecute(String s, Profile profile) {
Profile profileMap = profile;
// Log.d("Custom-UI","Validate ID = " + profileMap.getValidatedId());
Log.d("Info","First Name = " + profileMap.getFirstName());
Log.d("Info","Last Name = " + profileMap.getLastName());
Log.d("Info","Email = " + profileMap.getEmail());
Log.d("Info","Gender = " + profileMap.getGender());
Log.d("Info","Country = " + profileMap.getCountry());
Log.d("Info","Language = " + profileMap.getLanguage());
Log.d("Info","Location = " + profileMap.getLocation());
Log.d("Info","Profile Image URL = " + profileMap.getProfileImageURL());
}
@Override
public void onError(SocialAuthError socialAuthError) {
Log.e("GETTING PROFILE INFO ",socialAuthError.getMessage());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
成功登录后,我得到以下 logcat :
请帮助我在这一点上卡住了。谢谢
【问题讨论】:
-
不..这不是您共享@Selvin的链接的重复问题。我有类似的崩溃。我发现这是因为“getUserProfileAsync”无法从 Facebook 图形 API 检索一些数据,因此发生了 JsonParseException,导致某些参数仍然为 NULL。试图找出原因..
-
大声笑,是的,它是......配置文件为空,因为它从未被分配(并且链接解释了如何检查什么是空的)......为什么?这是一个不同的问题(但这就是坏/无异常/错误处理的结束方式)......他的代码位于 onError(不管为什么......这可能是互联网短缺)但他想使用这个未分配的变量跨度>
标签: android facebook socialauth