【发布时间】:2015-05-07 23:52:39
【问题描述】:
我正在使用SocialAuth 库,用于 Facebook、Twitter 和 Google 的身份验证用户。我有一些问题。
我在 log cat 中遇到错误
D/SocialAuthAdapter﹕ Selected provider is facebook
D/SocialAuthAdapter﹕ Loading keys and secrets from configuration
D/SocialAuthAdapter﹕ oauth_consumer.properties not found
D/SocialAuthAdapter﹕ Could not load configuration
D/SocialAuthAdapter﹕ Starting webview for authentication
D/SocialAuthError﹕ org.brickred.socialauth.exception.SocialAuthConfigurationException: SocialAuth configuration is null.
E/Login activity﹕ URL Authentication error
下面是我的文件夹结构
我的LoginActivity.java
public class LoginActivity extends ActionBarActivity {
private SocialAuthAdapter adapter;
//Android Component
private Button fb_button, tw_button, g_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_login);
//Social Adapter
adapter = new SocialAuthAdapter(new DialogListener() {
@Override
public void onComplete(Bundle bundle) {
adapter.getUserProfileAsync(new SocialAuthListener<Profile>() {
@Override
public void onExecute(String s, Profile profile) {
Log.e("Custom UI", "Login Receiving Data");
Profile profileMap = profile;
Log.d("Custom-UI", "Validate ID = " + profileMap.getValidatedId());
Log.d("Custom-UI", "First Name = " + profileMap.getFirstName());
Log.d("Custom-UI", "Last Name = " + profileMap.getLastName());
Log.d("Custom-UI", "Email = " + profileMap.getEmail());
Log.d("Custom-UI", "Gender = " + profileMap.getGender());
Log.d("Custom-UI", "Country = " + profileMap.getCountry());
Log.d("Custom-UI", "Language = " + profileMap.getLanguage());
Log.d("Custom-UI", "Location = " + profileMap.getLocation());
Log.d("Custom-UI", "Profile Image URL = " + profileMap.getProfileImageURL());
}
@Override
public void onError(SocialAuthError socialAuthError) {
Log.e("Custom UI", "Profile Data Error");
}
});
}
@Override
public void onError(SocialAuthError socialAuthError) {
Log.e("Login activity", socialAuthError.getMessage());
}
@Override
public void onCancel() {
}
@Override
public void onBack() {
}
});
//Wire up the Login Buttons
fb_button = (Button) findViewById(R.id.buttonFB);
tw_button = (Button) findViewById(R.id.buttonTwitter);
g_button = (Button) findViewById(R.id.buttonGoogle);
//Event Listener for Click
//Facebook
fb_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.authorize(LoginActivity.this, SocialAuthAdapter.Provider.FACEBOOK);
Toast.makeText(LoginActivity.this, "I am Facebook", Toast.LENGTH_SHORT).show();
}
});
//Twitter
tw_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.addCallBack(SocialAuthAdapter.Provider.TWITTER,"http://domain.com/auth/twitter");
adapter.authorize(LoginActivity.this, SocialAuthAdapter.Provider.TWITTER);
Toast.makeText(LoginActivity.this, "I am Twitter", Toast.LENGTH_SHORT).show();
}
});
//Google
g_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.addCallBack(SocialAuthAdapter.Provider.GOOGLE,"http://domain.com/google");
adapter.authorize(LoginActivity.this, SocialAuthAdapter.Provider.GOOGLE);
Toast.makeText(LoginActivity.this, "I am Google", Toast.LENGTH_SHORT).show();
}
});
}
}
callback url 在应用程序中的用途。回调网址会发布什么内容?
我怎样才能只在第一次显示这个登录屏幕?
一种方法是SharedPreference 来存储用户登录的设置,SocialAuth 库中有什么方法可以做到这一点。
感谢这个库,它很棒,但文档可以改进。
【问题讨论】:
标签: java android socialauth