在友盟分享的基礎上整合微信登入

weixin_34146805發表於2016-10-26

剛開始做微信登入整合的時候,
專案已經整合了友盟分享,
有問iOS那邊是怎麼弄的,
是直接用友盟的還是微信的,
然後iOS那邊說了一句用的是微信的,
然後我就默默地去微信開發平臺去看文件去了,
說實話,
微信的文件真是差,
而且demo是很久之前的...
不知道多久沒更新了,
我有看到一些程式碼的註釋是12年寫的....
按文件寫了一些,
沒成就直接不用微信的了,
直接去用友盟的....

友盟文件地址:http://dev.umeng.com/social/android/quick-integration

按友盟的文件弄好需要整合的檔案之後,
然後再包名下加個wxapi的包,
然後建立一個WXEntryActivity,
繼承自WXCallbackActivity.

public class WXEntryActivity extends WXCallbackActivity {  
}  

然後再點選事件的時候呼叫下面的程式碼.

 private void loginwithWechat() {  
    if (!MyApplication.api.isWXAppInstalled()) {  
        showToast(getString(R.string.msg_no_wechat));  
    } else {  
        UMShareAPI mShareAPI = UMShareAPI.get(context);  
        mShareAPI.doOauthVerify(getActivity(), SHARE_MEDIA.WEIXIN, umAuthListener);//授權  
    }  
}  

  private UMAuthListener umAuthListener = new UMAuthListener() {  
      @Override  
    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {  
        //授權成功 然後獲取使用者資訊  
        UMShareAPI mShareAPI = UMShareAPI.get(context);  
        mShareAPI.getPlatformInfo(getActivity(), SHARE_MEDIA.WEIXIN, umAuthListener1);  
    }  
  
    @Override  
    public void onError(SHARE_MEDIA platform, int action, Throwable t) {  
        Toast.makeText(context, "授權失敗", Toast.LENGTH_SHORT).show();  
    }  
  
    @Override  
    public void onCancel(SHARE_MEDIA platform, int action) {  
        Toast.makeText(context, "授權取消", Toast.LENGTH_SHORT).show();  
    }  
};  

private UMAuthListener umAuthListener1 = new UMAuthListener() {  
      @Override  
       public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {  
          String json = "{\"openid\":\"" + map.get("openid") + "\","  
                  + "\"nickname\":\"" + map.get("screen_name") + "\","  
                  + "\"sex\":\"" + map.get("gender") + "\","  
                  + "\"province\":\"" + map.get("province") + "\","  
                  + "\"city\":\"" + map.get("city") + "\","  
                  + "\"country\":\"" + map.get("country") + "\","  
                  + "\"headimgur\":\"" + map.get("profile_image_url") + "\","  
                  + "\"privilege\":[],"  
                  + "\"unionid\":\"" + map.get("unionid") + "\"}";  
          //再呼叫你們後臺寫的微信登入相關的介面,  
      }  
  
      @Override  
      public void onError(SHARE_MEDIA platform, int action, Throwable t) {  
          Toast.makeText(context, "獲取使用者資訊失敗", Toast.LENGTH_SHORT).show();  
      }  
  
      @Override  
      public void onCancel(SHARE_MEDIA platform, int action) {  
          Toast.makeText(context, "取消獲取使用者資訊", Toast.LENGTH_SHORT).show();  
      }  
  };  

話說為什麼友盟獲取到使用者的基本資訊之後,
存到map中的key並不是微信返回的欄位,
所以就有了上面那個json字串拼接的程式碼...
上面程式碼寫得比較爛,
可以再自行修改下.

有問題請留言.
如果你喜歡我寫的文章,
請關注我!

相關文章