我正在使用SocialAuth库为 Facebook , Twitter 和 Google 的auth用户。我有一些问题。
我在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();
}
});
}
}
app中将使用callback
个网址。什么将在回调网址上发布?
如何才能首次显示此登录屏幕?
一种方式是SharedPreference
来存储登录用户的设置,SocialAuth
库中是否有任何方法可以执行此操作。
感谢这个图书馆,它很棒,但文档可以改进。
答案 0 :(得分:2)
在我的头部撞了整整2天后,我发现了错误
您需要将assets
文件夹放在与res
文件夹相同的级别,才能加载oauth_consumer.properties
文件。
src
main
assets
java
res
AndroidManifest.xml
我只是需要以下疑惑来澄清你们是否可以提供帮助
app中将使用回调网址。什么将在回调网址上发布?
如何才能首次显示此登录屏幕?
一种方式是SharedPreference
来存储登录用户的设置,SocialAuth库中是否有任何方法可以执行此操作。