如何在 android 中的社交身份验证中获取访问令牌以及如何重用它们
How to get access token in social auth in android and how to reuse them
我知道这个问题已经被问过并得到了回答,但这对我没有帮助。我正在通过使用社交身份验证库来集成一些社交应用程序,如 Facebook 和 Twitter。我已经通过以下代码成功实现了它们:
public class SignUp extends Activity implements OnClickListener {
private EditText email_mEditText,password_mEditText;
SocialAuthAdapter socialAuthAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sign_up);
socialAuthAdapter = new SocialAuthAdapter(new ResponseListener());
socialAuthAdapter.authorize(SignUp.this, Provider.FACEBOOK);
socialAuthAdapter.signOut(this, Provider.FACEBOOK.toString());
使用此代码,我可以打开 Facebook 进行授权,但我想获取访问令牌。我尝试了以下代码来获取 activity 中的访问令牌:
socialAuthAdapter.getCurrentProvider().getAccessGrant().getKey();
但是,这会使应用程序崩溃并显示 NullPointerException
。
03-12 16:14:37.278: E/AndroidRuntime(19405): FATAL EXCEPTION: main
03-12 16:14:37.278: E/AndroidRuntime(19405): Process: com.technearby.app.main, PID: 19405
03-12 16:14:37.278: E/AndroidRuntime(19405): java.lang.NullPointerException
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.technearby.app.main.SignUp.onClick(SignUp.java:107)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.view.View.performClick(View.java:4438)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.view.View$PerformClick.run(View.java:18422)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Handler.handleCallback(Handler.java:733)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Handler.dispatchMessage(Handler.java:95)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Looper.loop(Looper.java:136)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.app.ActivityThread.main(ActivityThread.java:5001)
03-12 16:14:37.278: E/AndroidRuntime(19405): at java.lang.reflect.Method.invokeNative(Native Method)
03-12 16:14:37.278: E/AndroidRuntime(19405): at java.lang.reflect.Method.invoke(Method.java:515)
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-12 16:14:37.278: E/AndroidRuntime(19405): at dalvik.system.NativeStart.main(Native Method)
您必须自己将提供程序添加到适配器。例如,adapter.addProvider(Provider.FACEBOOK, R.drawable.facebook);
.
我知道这个问题已经被问过并得到了回答,但这对我没有帮助。我正在通过使用社交身份验证库来集成一些社交应用程序,如 Facebook 和 Twitter。我已经通过以下代码成功实现了它们:
public class SignUp extends Activity implements OnClickListener {
private EditText email_mEditText,password_mEditText;
SocialAuthAdapter socialAuthAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sign_up);
socialAuthAdapter = new SocialAuthAdapter(new ResponseListener());
socialAuthAdapter.authorize(SignUp.this, Provider.FACEBOOK);
socialAuthAdapter.signOut(this, Provider.FACEBOOK.toString());
使用此代码,我可以打开 Facebook 进行授权,但我想获取访问令牌。我尝试了以下代码来获取 activity 中的访问令牌:
socialAuthAdapter.getCurrentProvider().getAccessGrant().getKey();
但是,这会使应用程序崩溃并显示 NullPointerException
。
03-12 16:14:37.278: E/AndroidRuntime(19405): FATAL EXCEPTION: main
03-12 16:14:37.278: E/AndroidRuntime(19405): Process: com.technearby.app.main, PID: 19405
03-12 16:14:37.278: E/AndroidRuntime(19405): java.lang.NullPointerException
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.technearby.app.main.SignUp.onClick(SignUp.java:107)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.view.View.performClick(View.java:4438)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.view.View$PerformClick.run(View.java:18422)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Handler.handleCallback(Handler.java:733)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Handler.dispatchMessage(Handler.java:95)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.os.Looper.loop(Looper.java:136)
03-12 16:14:37.278: E/AndroidRuntime(19405): at android.app.ActivityThread.main(ActivityThread.java:5001)
03-12 16:14:37.278: E/AndroidRuntime(19405): at java.lang.reflect.Method.invokeNative(Native Method)
03-12 16:14:37.278: E/AndroidRuntime(19405): at java.lang.reflect.Method.invoke(Method.java:515)
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-12 16:14:37.278: E/AndroidRuntime(19405): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-12 16:14:37.278: E/AndroidRuntime(19405): at dalvik.system.NativeStart.main(Native Method)
您必须自己将提供程序添加到适配器。例如,adapter.addProvider(Provider.FACEBOOK, R.drawable.facebook);
.