我正在使用SocialAuth 库,它支持许多社交网络,包括Facebook 和Google+。
注意:如果需要,以后可以提供代码示例如何使用这个库(Facebook、Google+)登录相应的社交网络。
更新:
1) 客户端 ID 存储在 oauth_consumer.properties 文件中(放在 assets 文件夹中)
#facebook
graph.facebook.com.consumer_key = YOUR_KEY
graph.facebook.com.consumer_secret = YOUR_SECRET
#Google Plus
googleapis.com.consumer_key=YOUR_KEY.apps.googleusercontent.com
googleapis.com.consumer_secret=YOUR_SECRET
2) Google+ 需要重定向网址。在项目的google控制台中指定redirect url并在初始化时将其添加到SocialAdapter中。
...
socialAuthAdapter = new SocialAuthAdapter(new ResponseListener(), null);
setAuthProviders();
...
private void setAuthProviders() {
socialAuthAdapter.addProvider(SocialAuthAdapter.Provider.FACEBOOK, R.drawable.facbook);
socialAuthAdapter.addProvider(SocialAuthAdapter.Provider.GOOGLEPLUS, R.drawable.google);
socialAuthAdapter.addCallBack(SocialAuthAdapter.Provider.GOOGLEPLUS, GOOGLE_PLUS_CALLBACK_URL);
//urn:ietf:wg:oauth:2.0:oob - if you set this url, than accessToken received from social network should be handled manually (web page (in WebView) with login response from Google+ will contain in header or in response link accessToken, and you will get it manually by parsing that links). not the best way.
socialAuthAdapter.enable(social);
}
3) 登录流程结束后,您将在ResponseListener 中获得accessToken:
private class ResponseListener implements DialogListener {
@Override
public void onComplete(Bundle bundle) {
final String providerName = bundle.getString(SocialAuthAdapter.PROVIDER);
SocialNetwork network = SocialNetwork.valueOf(providerName);
String accessToken = socialAuthAdapter.getCurrentProvider().getAccessGrant().getKey();
}
@Override
public void onError(final SocialAuthError socialAuthError) {
}
@Override
public void onCancel() {
}
@Override
public void onBack() {
}
}
您可以在“为身份验证请求形成 URL” 部分阅读有关重定向 url here 的更多信息。