웹 앱 제3자 로그 인 - 웨 이 보 로그 인 (2)
22763 단어 상용 기술
이 글 은 로그 인 단 추 를 누 르 면 일어 나 는 일 을 다 루 고 있다.
우선, js 에서 인 터 랙 션 인 터 페 이 스 를 터치 하면 다음 과 같이 들 어 갑 니 다.
class H5AndAndroidInterface {
@JavascriptInterface
public void doApp(int type, String jsonString) {
if (jsonString == null) {
jsonString = " ";
}
Log.e("Webview_doApp()", type + "--" + jsonString);
switch (type) {
case 8:
WbLogin wbLogin = WbLogin.getInstance(WebActivity.this);
wbLogin.login(WebActivity.this);
break;
default:
toast(" " + jsonString);
break;
}
}
다음은 WBLogin 류 의 구체 적 인 실현 을 보 여 드 리 겠 습 니 다.
package xxx.thirdlogin.wblogin;( )
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import com.baidu.android.common.logging.Log;
import com.sina.weibo.sdk.WbSdk;
import com.sina.weibo.sdk.auth.AccessTokenKeeper;
import com.sina.weibo.sdk.auth.AuthInfo;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WbConnectErrorMessage;
import com.sina.weibo.sdk.auth.sso.SsoHandler;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
/**
* weibo
*/
public class WbLogin {
private static final String TAG = "WbLogin";
/** "access_token","expires_in","refresh_token", */
private Oauth2AccessToken mAccessToken;
/** :SsoHandler SDK SSO */
private SsoHandler mSsoHandler;
private SelfWbAuthListener mAuthListener;
private Activity mActivity;
private static WbLogin instance;
private WbLogin(Context context){
// SDK
WbSdk.install(context.getApplicationContext(),new AuthInfo(context.getApplicationContext(),Constants.APP_KEY,Constants.REDIRECT_URL,Constants.SCOPE));
}
public static WbLogin getInstance(Context context) {
if(instance == null){
instance = new WbLogin(context);
}
return WbLogin.instance;
}
public void login(Activity activity){
this.mActivity = activity;
if(mSsoHandler == null){
this.mSsoHandler = new SsoHandler(mActivity);
}
if(mAuthListener == null){
this.mAuthListener = new SelfWbAuthListener(mActivity);
}
//ALL IN ONE , , ,
mSsoHandler.authorize(mAuthListener);
}
public void onResult(int requestCode, int resultCode, Intent data){
if(mSsoHandler!=null){
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
private Activity mActivity;
public SelfWbAuthListener(Activity activity) {
this.mActivity = activity;
}
@Override
public void onSuccess(final Oauth2AccessToken token) {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// Token
//updateTokenView(false);
// Token SharedPreferences
AccessTokenKeeper.writeAccessToken(mActivity, mAccessToken);
Toast.makeText(mActivity," ", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(mActivity," ", Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(mActivity, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
}
PS: 상기 코드 에서 Constants 는 웨 이 보 에서 제공 한 문서 와 sdk 에서 왔 습 니 다. 스스로 찾 아 보 세 요.
로그 인 에 성공 하면 onSuccess 함수 로 되 돌아 가 후속 처리 논 리 를 쓸 수 있 습 니 다.여기 서 아직 끝나 지 않 았 습 니 다. 저희 가 웨 이 보 에 인증 요청 을 한 후에 먼저 onActivity Result 로 돌아 가기 때문에 여기에 논 리 를 추가 해 야 합 니 다.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//
WbLogin wbLogin = WbLogin.getInstance(WebActivity.this);
wbLogin.onResult(requestCode,resultCode,data);
}
이로써 웨 이 보 웹 앱 제3자 로그 인 에 관 한 내용 은 다 썼 습 니 다. 토론 을 환영 합 니 다 ~
이전 글 의 링크 를 첨부 합 니 다: 웹 app 제3자 로그 인 - 웨 이 보 로그 인 (1)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
웹 앱 제3자 로그 인 - 웨 이 보 로그 인 (2)지난 글 에서 우 리 는 안 드 로 이 드 와 js 간 에 어떻게 상호작용 을 하 는 지, 즉 H5 페이지 의 로그 인 버튼 이 안 드 로 이 드 의 처리 절 차 를 어떻게 촉발 하 는 지 에 대해 이야기 했다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.